我在看Pluralsight关于React的课程,老师说道具不应该被改变。我现在正在读一篇关于道具vs.国家的文章(uberVU/react-guide),它说

道具和状态更改都会触发呈现更新。

文章后面说:

Props(属性的缩写)是组件的配置,如果可以的话,是它的选项。它们是从上面接收的,是不可变的。

所以道具可以改变,但它们应该是不可变的? 什么时候应该使用道具,什么时候应该使用状态? 如果你有一个React组件需要的数据,它应该通过道具或设置在React组件通过getInitialState?


当前回答

props是JavaScript对象,传递给组件,保存配置属性。 props是接收组件不可更改的 state是在Component中管理的JavaScript对象,保存它的内部状态。 更新可以触发重新渲染

其他回答

状态是真相的起源,是您的数据存在的地方。 你可以说这种状态是通过道具表现出来的。

为组件提供支持可以使UI与数据保持同步。 组件实际上只是一个返回标记的函数。

给定相同的道具(用于显示的数据),它将始终生成相同的标记。

所以这些道具就像是将数据从原点传递到功能组件的管道。

道具——你不能改变它的值。 States—您可以在代码中更改它的值,但当呈现发生时它将是活动的。

React props和state之间的主要区别是props是不可变的,一旦组件接收到一个props,它就不能改变它的值,而在另一方面,React state是可变的,组件可以根据需要的时间自由改变它的值。

一般来说,一个组件(父组件)的状态是子组件的prop。

State resides within a component where as props are passed from parent to child. Props are generally immutable. class Parent extends React.Component { constructor() { super(); this.state = { name : "John", } } render() { return ( <Child name={this.state.name}> ) } } class Child extends React.Component { constructor() { super(); } render() { return( {this.props.name} ) } }

在上面的代码中,我们有一个父类(parent),它的状态是name,它被传递给子组件(子类)作为道具,子组件使用{this.props.name}渲染它。

“Props”是传递给组件(1)的外部输入,“state”是由组件(2)管理的内部私有数据。