状态值不更新 reactjs

State value not updating reactjs

class RaisablePaper extends Component {
        constructor(props) {
            super();
            this.state = {
                state1: "state1",
                openNow: props.boxOpen,

            };
        }
}

我正在尝试通过 <RaisablePaper boxOpen={this.state.dOpen}/> 向此 class 发送值。但无论何时 dOpen 发生变化,它似乎都不会更新 openNow。非常感谢帮助。

您正在设置 constructor 中安装组件之前的状态,当 props 更改时不会再次触发。为此,您可以使用 React 的 componentWillReceiveProps,当新道具发送到组件时将调用它。

class RaisablePaper extends Component {
  constructor(props) {
    super();
    this.state = {
      state1: "state1",
      openNow: props.boxOpen
    };
  }
  componentWillReceiveProps(props) {
    this.setState({
      openNow: props.boxOpen
    });
  }
}

直接使用道具会更简单,而不用担心将其同步到您的状态。一般来说,尽可能依赖 props 是个好主意,只有在绝对必要时才涉及状态。

但是 Fabian Schultz 是完全正确的——你的构造函数只运行一次,在组件安装之前,所以如果组件依赖于在构造期间初始化的状态,你将永远不会收到后续更新。


我只是想像您如何使用 boxOpen 状态来展示示例;无论您的 render 方法在做什么,您都可以遵循相同的总体思路。

class RaisablePaper extends Component {
  render() {
    return (
      <div className={this.props.boxOpen ? 'is-open' : ''}>
        Here's some content...
      </div>
    );
  }
}