React 中的 this.state 与 state

IT技术 javascript reactjs state react-props
2021-05-05 04:45:34

我正在一个新的代码库中工作。通常,我会在 React 组件中设置这样的状态:

class App extends React.Component {
    constructor() {
        super();
        this.state={
            foo: 'bar'
        }
     }
    ....

在这个新的代码库中,我看到了很多这样的内容:

class App extends React.Component {
    state={
        foo: 'bar'
     }
    ....

这样做有好处吗?他们似乎只在不需要更改状态时才这样做。我一直认为状态是 React 处理的东西。这是可以做的事情吗?

2个回答

两种方法的最终结果是相同的。这两种方法都只是设置state组件的初始值。值得注意的是,类属性是第 3 阶段的提案,因此所有开发环境可能无法使用它们。

如果在构造函数中没有做任何其他事情,我个人喜欢使用类字段变体,因为它编写的代码更少,而且您无需super担心调用。

例子

class Component1 extends React.Component {
  state = { value: this.props.initialValue };

  render() {
    return <div> {this.state.value} </div>
  }
}

class Component2 extends React.Component {
  constructor(props) {
    super(props);
    this.state = { value: props.initialValue };
  }

  render() {
    return <div> {this.state.value} </div>
  }
}

function App() {
  return (
    <div>
      <Component1 initialValue={1} />
      <Component2 initialValue={2} />
    </div>
  );
}

实际上它们都绑定到this指针。this是,在做constructorclass

完全你可以访问本地状态 bythis.state但在第一种样式中你可以传递propsconstructorbysuper然后在state声明中使用它,如下所示:

class App extends React.Component {
    constructor(props) {
        super(props);
        this.state={
            foo: 'bar',
            jaz: props.someParentState,
        }
     }
....

太棒了,你可以访问propsin constructor,是不是很漂亮?我绝对使用这种风格进行本地状态声明。

希望这对你有帮助。