javascript - 输入 Prop 不适用于纯函数组件?

标签 javascript reactjs typescript redux react-redux

我有以下内容:

const actionCreators = {
    action: AppReducer.actionCreators.action
}
interface GlobalState {
    user: Model.User | null;
}

interface InputState {
    setStashBarWidth(width: number);
    stashWidth: number;
}


const Header = (props: (GlobalState & InputState & typeof actionCreators)) => { ... }

const mapStateToProps = (state: RootState): GlobalState => {
    return {
        user: state.app.user
    };
};

export default connect(mapStateToProps, actionCreators)(Header);

我的目的是制作可以传递到标题中的“InputState” Prop ,例如:

<Header setStashBarWidth={(number)=>{}} stashWidth={3} />

但是,输入 Prop 似乎未被识别,我无法将任何内容传递给 setStashBarWidth 或 stashWidth,因为它们未被识别:

(40,19): Property 'stashBarWidth' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes> & Readonly<{ c...'.

最佳答案

您尚未在纯组件上定义 Prop ,您只是断言它将在参数中接收的 Prop (不是同一件事)。这就好像你制作了一个常规的 React 组件,但没有像 class X extends React.Component<MyProps> 这样将 props 传递给泛型组件。相反,你做了 const props: MyProps = this.props;在你的渲染方法中。

试试这个:

const Header: React.SFC<GlobalState & InputState & typeof actionCreators> = (props) => { ... }

关于javascript - 输入 Prop 不适用于纯函数组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51022377/

相关文章:

javascript - 将数组转换为对象以选择对象(重构/优化)

javascript - 折叠时向 Accordion Toggle 添加类

TypeScript,如何输入将 Promise<T>[] 转换为 Promise<T[]> 的函数?

javascript - 脚本的可见性包含在 IFRAME 中

javascript - jsTree Contextmenu 获取选中的节点id

javascript - ajax调用结束时window.open不起作用

javascript - 未捕获的 TypeError : $(. ..).size 不是函数

reactjs - 如何从 webpack v5 生产版本中删除不必要的库

javascript - 如何在 Angular 中使用不是为 Angular 创建的节点模块?

javascript - react |如何从状态更新中删除 Prevent.default