在已随 onPress 更改的循环反应本机代码内显示值

display value inside of looped react native code that has changed with onPress

我想做的是重复一个订单项,用户将能够更改该行中每个项目的数量。例如

到目前为止,我已经能够更改值并记录更改正在发生,但显示的值不会更改。

以下是我目前所拥有的

render() {

    let pizzaSides = this.props.pizzaSidesArray.map((sidesObj) => {

      sidesObj.count = 0;

减少项目计数但不低于 0 的递减函数。

        decrement = () =>{
          console.log('dec');
          console.log(sidesObj);
          if (sidesObj.count > 0) {
            sidesObj.count--;
          }
        }

调用时增量添加

        increment = () =>{
          console.log('inc');
          console.log(sidesObj);
          sidesObj.count++;
        }

        return (
          <View 
             key={sidesObj.name} 
             style={{
                  paddingTop: 10, 
                  flex: 1, 
                  flexDirection: 'row', 
                  alignItems: 'center',
                  justifyContent: 'space-between'}}>

            <View style={{flex:1.5,flexDirection: 'row'}}>
              <TouchableHighlight
                onPress={ decrement}
                style={{flex:1}}>
                <Text> - </Text>
              </TouchableHighlight>

尽管可触摸高亮记录了更改,但下面的文字没有更改

              <Text style={{flex:1}}>
                {sidesObj.count}
              </Text>

              <TouchableHighlight
                onPress={ increment}
                style={{flex:1}}>
                <Text> + </Text>
              </TouchableHighlight>
            </View>

          </View>
        );
    });

    return (
        <View>

          {pizzaSides}
        </View>

    )
}

}

感谢您的帮助。 :D

您需要将您的值存储在状态中。看看 React documentation

除了@Antone Grandchamp 所说的。

在您的组件中,您可以调用 this.forceUpdate() 来强制重新渲染。

文档:https://facebook.github.io/react/docs/component-api.html

如果我没有使用 Redux,而是使用默认状态处理,那么调用 this.setState() 也会导致它重新渲染。

Whosebug 上的以下问题很有帮助。