【问题标题】:sportsBasketballChange another place its not setting state properlysportsBasketballChange 另一个地方它没有正确设置状态
【发布时间】:2016-04-13 22:48:16
【问题描述】:

我想说的是我无法在sportsBasketballChange 函数中使用setState 设置值,但我可以在sportsSoccerChange 函数中设置它

  • 我是 react.js 的新手
  • 我正在尝试使用 setState 设置值。
  • 在sportsSoccerChange 函数中正确设置setState。
  • 但是sportsBasketballChange另一个地方它没有正确设置状态。
  • 你们能告诉我如何解决它吗?
  • 在下面提供我的代码。

部分代码

sportsSoccerChange(value) {
    this.props.onChange();

    let processedValue = value;

    // sportsMessages sportsAirFalling
    processedValue = sportsAirFallBALL(processedValue, this.props.sportsAirFall);

    // sportsSuceessOnTime-ation
    let sportsSuceessOnTime-ationResult = sportsSuceessOnTime-ateBALL(processedValue, this.props.sportsDrive);
    if (sportsSuceessOnTime-ationResult === true) {
        this.setState({ sportsOutcome: 'sportsSuceessOnTime-' });
        ///here i get value as sportsSuceessOnTime-
    }
    //this.setState({ isBALLValid: sportsSuceessOnTime-ationResult });

    // formatting
    processedValue = formatBALL(processedValue, this.props.sportsLongJump);

    // set value in local component state
    this.setState({ sportsMessagesValue: processedValue });
},

sportsBasketballChange() {
    if (this.state.sportsOutcome === 'female') {
        this.setState({ sportsOutcome: 'sportsSuceessOnTime-' });
        ///here i don't get value as sportsSuceessOnTime-
    }
},

这里有完整的代码

https://gist.github.com/js08/e20c02bf21242201c1525577d55dedbc

【问题讨论】:

  • 我们真的不知道你在问什么。我们也不是免费的编码服务。当您发现一个具体的、缩小范围的问题时,我们会为您提供帮助。
  • @AaronGillion 嘿,谢谢您的回复...我想说的是我无法在sportsBasketballChange 函数中使用setState 设置值,但我可以在sportsSoccerChange 函数中设置它... ..
  • @all 我尝试调试但找不到解决方案...请不要将其标记为否定
  • 好的。撤回投票。我确实了解调试是多么痛苦。
  • @AaronGillion 你知道问题出在哪里吗:(

标签: javascript node.js reactjs react-native redux


【解决方案1】:

我假设您正在使用日志记录或调试检查这些注释行中 this.state 的值。

setState 是异步的。这意味着无法保证在您到达下一行代码时更改已经发生。但是,setState 允许您提供一个回调函数,以便在状态更新完成后运行。 是您应该检查更新值的地方。

sportsBasketballChange() {
    if (this.state.sportsOutcome === 'female') {
        this.setState({ sportsOutcome: 'sportsSuceessOnTime-' },
            function(){ 
                console.log(this.state.sportsOutcome); // == 'sportsSuceessOnTime-'
            }
        );
        console.log(this.state.sportsOutcome); // untrustworthy
    }
},

【讨论】:

  • react 是否有任何 js 设计模式
猜你喜欢
  • 1970-01-01
  • 2020-12-04
  • 2020-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-19
相关资源
最近更新 更多