ホームページ >ウェブフロントエンド >フロントエンドQ&A >状態の更新に反応するメソッドは何ですか?
#このチュートリアルの動作環境: Windows7 システム、react17.0.1 バージョン、Dell G3 コンピューター。反応状態の更新メソッドは次のとおりです。 1. キー、「371936f19d7b3513c17e0b399521c6b1”; 2. ref 親コンポーネントを使用して子コンポーネント関数を呼び出します。 3. 親を通じてデータを子に渡し、子はレンダリングのみを担当します。
react で状態を更新する方法は何ですか?
react では、親プロパティが変更されたときに子の状態を更新する方法がたくさんあります。
サブコンポーネント:class Children extends Component { constructor(props) { super(props); this.state = { a: this.props.a, b: this.props.b, treeData: '', targets: '', } } componentDidMount() { const { a, b } = this.state const data = {a,b} fetch('/Url', { data }).then(res => { if (res.code === 0) { this.setState({ treeData: res.a, targets: res.b, }) } else { message.error(res.errmsg) } }) } test(item1, item2) { const data = { item1, item2 } fetch('/Url', {data}).then(res => { if (res.code === 0) { this.setState({ treeData: res.a, targets: res.b, }) } else { message.error(res.errmsg) } }) } } export default Children方法 1: キーを上手に使用する
<Children key={this.state.key} a={this.state.a} b={this.state.b} /> //父组件调用子组件この方法では、キーの変更によってサブコンポーネントが再インスタンス化されます (react でのキーの変更により、コンポーネント) コンポーネント) 方法 2: ref 親コンポーネントを使用してサブコンポーネント関数を呼び出します (反応設計仕様に準拠していませんが、エスケープ出口と見なすことができます)
class father extends Component { constructer(props) { super(props); this.state={ a: '1', b: '2', } this.myRef this.test = this.test.bind(this) } change() { const { a,b } = this.state console.log(this.myRef.test(a,b)) // 直接调用实例化后的Children组件对象里函数 } render() { <Children wrappedComponentRef={(inst) => { this.myRef = inst } } ref={(inst) => { this.myRef = inst } } /> <button onClick={this.test}>点击</button> } }注: WrappedComponentRef は、react-router です。上位コンポーネントが ref を正しく取得できない問題を解決するために v4 で使用されます (非上位コンポーネントを削除する必要があります) 方法 3: 親データを子に渡し、子はレンダリングのみを担当します (反応設計の概念に最も一致しています))推奨! ! 親コンポーネント:
class father extends Component { constructer(props) { super(props); this.state={ a:'1', b:'2', data:'', } } getcomposedata() { const { a, b } = this.state const data = { a, b } fetch('/Url', {data}).then(res => { if (res.code === 0) { this.setState({ data:res.data }) } else { message.error(res.errmsg) } }) } render() { <Children data={this.state.data}} /> } }子コンポーネント:
componentWillReceiveProps(nextProps) { const { data } = this.state const newdata = nextProps.data.toString() if (data.toString() !== newdata) { this.setState({ data: nextProps.data, }) } }注意: ReactのcomponentWillReceivePropsサイクルが存在期間であり、変更されたpropsは自身の状態の判断と更新に使用されます 推奨される学習: 「
react ビデオ チュートリアル 」
以上が状態の更新に反応するメソッドは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。