gpt4 book ai didi

javascript - 如何在reactjs中强制从父组件更新子组件

转载 作者:行者123 更新时间:2023-11-29 23:21:06 25 4
gpt4 key购买 nike

当父状态改变时我需要重新渲染子组件

在parent Component中设置语言一旦语言发生变化, child 也将使用所选语言进行更新

Parent.js

import React, { Component } from "react";
import Child from "./Child.js";

class Parent extends Component {
constructor(props) {
super(props);
this.state ={
lblName: "Name",
lblGender: "Gender",
lblDOB: "Date Of Birth",
lblNatio: "Nationality",
};
}
ChangeLanguage(lang, e){
if(lang === "en"){
this.setState(
{
lblName: "Name",
lblGender: "Gender",
lblDOB: "Date Of Birth",
lblNatio: "Nationality",
});
}
else if(lang === "sp"){
this.setState(
{
lblName: "Nombre",
lblGender: "Género",
lblDOB: "Fecha de nacimiento",
lblNatio: "Nacionalidad",
});
}

}
render() {
return (
<Child ChildData={this.state}>
<button onClick = {this.ChangeLanguage.bind(this, en)}>English</button>
<button onClick = {this.ChangeLanguage.bind(this, sp)}>Spanish</button>
)}
}

父状态传递给子组件并作为子组件

Child.js

import React, { Component } from "react";


class Parent extends Component {
constructor(props) {
super(props);
this.state = this.props.ChildData;
}
componentWillReceiveProps(nextProps){
this.forceUpdate();
this.setState(nextProps.ChildData);
}

render() {
return (
<div>
<div>
<label>lblName</label>
<input type="Text"></input>
</div>
<div>
<label>lblGender</label>
<input type="Text"></input>
</div>
<div>
<label>lblDOB</label>
<input type="Date"></input>
</div>
<div>
<label>lblNatio</label>
<input type="Text"></input>
</div>
</div>
)}
}

尝试使用这两种解决方案 forceUpdate 并设置状态...我失败了我想在语言 c 时更新父级的标签

最佳答案

只需将带有语言的 Props 添加到子控件中并从父控件中传递即可

关于javascript - 如何在reactjs中强制从父组件更新子组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50618571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com