Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 双击后反应本机状态更改。_Javascript_Reactjs_React Native - Fatal编程技术网

Javascript 双击后反应本机状态更改。

Javascript 双击后反应本机状态更改。,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我有一个按钮,当我点击它时,按钮改变了它的状态。但我必须双击才能改变状态。我把它记录下来,在第一次点击时,它显示为空白,当我再次点击它时,它将改变它的状态。下面是我的代码: class CustomButtonOne extends React.Component { constructor(props) { super(props); this.state = { buttonOne:'', }; this.selectio

我有一个按钮,当我点击它时,按钮改变了它的状态。但我必须双击才能改变状态。我把它记录下来,在第一次点击时,它显示为空白,当我再次点击它时,它将改变它的状态。下面是我的代码:

class CustomButtonOne extends React.Component {
  constructor(props) {
      super(props);
      this.state = {
        buttonOne:'',
       };
      this.selectionOnPressOne = this.selectionOnPressOne.bind(this),
  }

  selectionOnPressOne = () => {
      this.setState({
        buttonOne:'ONE'
        })
        console.log(this.state.buttonOne, 'this.state.buttonOne')
  }

  render() {
    return (
      <View>
        <TouchableOpacity
                onPress={()=> this.selectionOnPressOne()}>
          <Text>Button</Text>
        </TouchableOpacity>
      </View>
    )
}
}

export default CustomButtonOne
类CustomButtonOne扩展React.Component{
建造师(道具){
超级(道具);
此.state={
按钮无:“”,
};
this.selectionOnPressOne=this.selectionOnPressOne.bind(this),
}
选择OnPressone=()=>{
这是我的国家({
没有:'一个'
})
console.log(this.state.buttone,'this.state.buttonOne')
}
render(){
返回(
this.selectionOnPressOne()}>
按钮
)
}
}
导出默认自定义按钮无
为什么会这样?我怎样才能通过轻触改变状态?
任何建议或意见将不胜感激,谢谢

设置状态操作是异步的,因此您记录的更改可能无法立即使用

试试这个

this.setState({
  buttonOne:'ONE'
}, () => console.log(this.state.buttonOne, 'this.state.buttonOne'))

setState
操作是async,因此您记录的更改可能不会立即可用

试试这个

this.setState({
  buttonOne:'ONE'
}, () => console.log(this.state.buttonOne, 'this.state.buttonOne'))

非常感谢,效果很好!但我真的不明白为什么它会起作用。你能解释一下发生了什么事吗?我想知道:)Javascript是异步工作的,
console.log几乎是立即执行的,而
setState
则需要更多的时间来执行。因此,通过在
setState
的回调函数中传递
console.log
,我们可以安全地假设只有在值发生更改时才会调用它。非常感谢,它工作得非常好!但我真的不明白为什么它会起作用。你能解释一下发生了什么事吗?我想知道:)Javascript是异步工作的,
console.log几乎是立即执行的,而
setState
则需要更多的时间来执行。因此,通过在
setState
的回调函数中传递
console.log
,我们可以安全地假设只有在值发生更改时才会调用它