主要的问题是开发人员可以向标准形式的reducers状态添加任何他们想要的东西,它不是静态的。这导致了不同开发人员之间更难理解的状态,基本上是一个隐藏的模型。
我最初创建了一个键/值JS对象来表示表单的数据模型。然后我意识到,当reducer返回一个包含任何内容的新状态时,只能通过state prop将其发送到reducer。没有任何安全措施可以阻止开发人员返回{null}或其他疯狂的事情。
如果开发者试图向Reducer添加一个没有在模型中定义和初始化的状态变量,我希望Reducer失败并发出控制台警告。我觉得这对类来说肯定是可能的,但对函数和钩子我不确定。
export const FormModel = {
submit: false,
}
export default function FormReducer(state = FormModel, action) {
switch (action.type) {
case 'submit':
return { ...state, submit: action.payload}
default:
return state
}
}
const Form = ({}) => {
return (
<form>{/*TODO*/}</form>
)
}
export default Form
Form.propTypes = {
//TODO
}
奖励积分:集成ajax的最佳方法。
1条答案
按热度按时间fae0ux8s1#
在这里我想谈一件事,这可能是类似于你正在寻找的。
我使用react和typescript以及eslint创建了我的应用程序,首先,我定义了一个名为
IProfileState
的模型,然后扩展为initialState
。就像这样:
我把
IProfileState
接口传递给PayloadAction
,这是redux操作的类型,如下所示。当我试图输入错误的东西或者我没有在
IProfileState
上定义它时。我会得到这样的错误:
也许你也可以实现这个。完整的文档在这里https://react-redux.js.org/using-react-redux/usage-with-TypeScript