React 在方法中更新状态并将其传递
2020-01-17
639
我尝试在方法 start() 中更新状态,然后将状态的值传递给 MyComponent。 我的组件工作正常,当我在类中设置它时,状态更新正常,但是当我尝试从 start 方法传递它时 - 它不起作用。得到“TypeError:this.setState 不是函数”
已编辑 - 修复绑定但仍然不起作用。
可能是什么问题?
export default class App extends Component{
constructor (props){
super(props);
this.state = {
val: false
}
this.start= this.start.bind(this)
}
start() {
this.setState({ val: true })
}
render(){
return (
<View>
<Button
title='start'
onPress={this.start}>
</Button>
<MyComponent value={this.state.val}> </MyComponent>
</View>
);
}
}
这是 MyComponent:
class MyComponent extends Component {
constructor(props){
super(props)
this.state={}
this.state.custum={
backgroundColor: 'red'
}
let intervalid;
if (this.props.value){
setTimeout(() => {
this.setState( {
custum:{
backgroundColor: 'green'
}
})
}, 1000);
setTimeout(() => {
this.setState( {
custum:{
backgroundColor: 'red'
}
})
}, 2000);
}
}
render() {
return (
<View style={[styles.old, this.state.custum]}>
</View>
);
}
}
var styles = StyleSheet.create({
old:{
padding: 5,
height: 80,
width: 80,
borderRadius:160,
},
})
export default MyComponent;
3个回答
您必须将上下文绑定到您的函数。
constructor (props){
super(props);
this.state = {
val: false
}
this.start = this.start.bind(this)
}
或者您也可以使用箭头函数,无需绑定
start = () => {
this.setState({ val: true })
}
Roman Unt
2020-01-17
将启动方法绑定到组件其他“ this”的启动函数
917581080
Aldrin
2020-01-17
您需要通过构造函数或 ES6 箭头函数绑定 start 函数。
export default class App extends Component{
constructor (props){
super(props);
this.state = {
val: false
}
}
start = () => {
this.setState({ val: true })
}
render(){
return (
<View>
<Button
title='start'
onPress={this.start}>
</Button>
<MyComponent value={this.state.val}> </MyComponent>
</View>
);
}
}
Rise
2020-01-17