首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >界面中的Typescript界面

界面中的Typescript界面
EN

Stack Overflow用户
提问于 2020-11-06 20:22:22
回答 1查看 43关注 0票数 1

我需要你的帮助与接口,这是包装在第二个接口。我有这样的减速器:

代码语言:javascript
复制
import { createSlice } from '@reduxjs/toolkit';

export interface IStep {
  id: number;
  label: string;
  value: string;
  placeholder: string;
}

export interface InitialState {
  activeStep: number;
  steps: IStep[];
}

const initialState: InitialState = {
  activeStep: 0,
  steps: [
    {
      id: 0,
      label: 'First Name',
      value: '',
      placeholder: 'First Name',
    },
   ......
  ],
};

export const slice = createSlice({
  name: 'multiStepForm',
  initialState,
  reducers: {
   ......
  },
});

我想在名为Step的组件中使用接口InitialState,如下所示。

代码语言:javascript
复制
import React from 'react';
import { IStep } from 'redux/reducers/multiStepForm';

interface IPropsStep {
  activeStep: number;
  steps: IStep[];
  handleChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
}

const Step = ({ activeStep, steps, handleChange }: IPropsStep): JSX.Element => {
  return (
    <input
      id={steps[activeStep].id}
      type="text"
      onChange={handleChange}
      placeholder={steps[activeStep].placeholder}
      value={steps[activeStep].value}
    />
  );
};

export default Step;

很容易看出,activeStep和步骤属于InitialState,但我不知道如何实现它们。

我一直在尝试这样做:

代码语言:javascript
复制
interface IPropsStep extends InitialState {
  handleChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
}

const Step = ({ handleChange }: IPropsStep): JSX.Element => {
  return (
    <input
      id={steps[activeStep].id}
      type="text"
      onChange={handleChange}
      placeholder={steps[activeStep].placeholder}
      value={steps[activeStep].value}
    />
  );
};

但是我有错误,因为steps和activeStep在这里是未知的。我该如何处理这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2020-11-06 20:29:20

如果我正确理解了您的问题,您应该能够像使用object一样从interface访问密钥。

代码语言:javascript
复制
interface IPropsStep {
  activeStep: InitialState['activeStep'];
  steps: InitialState['steps'];
  handleChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
}

这样,您就可以直接引用InitialState接口。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64714627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档