【发布时间】:2019-11-12 07:11:10
【问题描述】:
我是 react 钩子的新手,我只是在文档上看不到这个:
const MyComponent = ({myProp}) => {
const [myPropHook, setPropHook] = useState(myProp)
...
}
我想知道这是否是一个好习惯?
【问题讨论】:
-
在我看来,如果您希望仅将
myProp用作初始值,这是可以的,否则我建议您使用useRef(),以防您需要在myProp更改时更新本地状态. -
有一个合理的用例。例如,如果您有一个表单,并且 props 保存对象的服务器状态,您希望 state 保存用户当前输入的内容,并且 props 仅在服务器更新对象状态后更新。
-
@apokryfos 在该示例中,您应该使用道具,直到更新内部状态。
-
@WillJenkins 澄清一下。内部状态是例如服务器上的数据库行。道具保存行数据。组件状态将保存用户对该数据的修改,但在修改的数据到达服务器并且服务器更新行之前,不应更新道具。在这种情况下,不使用状态意味着您的表单输入将是只读的。这假设将有一个提交按钮来触发服务器更新,而不是一个按你类型更新类型的框
标签: javascript reactjs