本文给大家带来了react更新的state方法教程解析,旨在帮助大家掌握更多react的相关知识。react更新state方法有大致三点,如下所示:1、通过key变化子组件,代码如“<Children key={this.state.key} a={this.state.a} b={this.state.b} />”;2、利用ref父组件调用子组件函数;3、通过父级给子级传数据,子级只负责渲染。
本文适用于Windows7系统、react17.0.1版、Dell G3电脑。
一起聊聊react更新的state方法
子组件:
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
方法一:巧用key
<Children key={this.state.key} a={this.state.a} b={this.state.b} /> //父组件调用子组件
这种方法是通过key变化子组件会重新实例化 (react的key变化会销毁组件在重新实例化组件)
方法二:利用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 v4中用来解决高阶组件无法正确获取到ref( 非高阶组件要去掉哦)
方法三:父级给子级传数据,子级只负责渲染(最优)
父组件:
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来判断更新自身state
关于react更新的state方法内容就聊到这里,翼速应用平台内有更多相关资讯,欢迎查阅!
我来说两句