我正在观看关于 React 的 Pluralsight 课程,讲师说不应更改道具。我现在正在阅读一篇关于道具与状态 的文章(uberVU/react-guide) ,它说
道具和状态更改都会触发渲染更新。
文章后面说:
Props(properties 的缩写)是一个组件的配置,如果可以的话,它是它的选项。它们是从上面接收的并且是不可变的。
所以道具可以改变,但它们应该是不可变的?
什么时候应该使用道具,什么时候应该使用状态?
如果你有 React 组件需要的数据,是应该通过 props 传递还是通过
getInitialState
在 React 组件中设置?
原文由 David 发布,翻译遵循 CC BY-SA 4.0 许可协议
道具和状态是相关的。一个组件的状态往往会成为子组件的 props。 Props 在父级的 render 方法中作为
React.createElement()
的第二个参数传递给子级,或者,如果您使用 JSX,更熟悉的标记属性。childsName
的父状态值成为孩子的this.props.name
。从孩子的角度来看,名称道具是不可变的。如果需要更改,父级应该只更改其内部状态:React 会为你将它传播给孩子。一个自然的后续问题是:如果孩子需要更改其名称道具怎么办?这通常通过子事件和父回调来完成。孩子可能会公开一个名为
onNameChanged
的事件。然后,父级将通过传递回调处理程序来订阅事件。孩子将通过调用将其请求的新名称作为参数传递给事件回调,例如
this.props.onNameChanged('New name')
,并且父母将使用事件处理程序中的名称来更新其状态。