上下文API:使用处于上下文状态的函数来更改上下文变量。功能未执行

时间:2019-03-14 18:53:51

标签: reactjs react-native

-反应16.5 -尽管我认为这个问题是一个反应性问题,而不是一个反应性本机问题,但这是我的反应性本机版本。我的package.json没有本机版本,而是: “ react-native”:“ https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz

目标:从另一个文件更改上下文(上下文API)中变量的值

方法:我在上下文中有一个函数来切换值和另一个文件中调用它的按钮。

问题:当我按下按钮时,该功能无法执行。尽管我的上下文变量(称为“ ctx”)在被调用的范围内可用,但仍会发生这种情况。

这里是上下文,位于其自己的文件中(我们将其称为“上下文文件”):

class ConfigProvider extends Component {
  state = {
    dataSource: ds.cloneWithRows(game_array),

    toggleQuestion: () => {
      debugger;
      new_game_array = game_array[0].questions.completed = true;
      this.setState({ game_array: new_game_array });
    }
  };

在此处调用函数(我们将其称为“按钮文件”):

if (hold_type === "true_false"){
                debugger;
                return(
                    <View style={{ width: dims.width, height: HEIGHT_OF_true_false_SECTION, flexDirection: "row", justifyContent: "space-around", alignItems: "center"}}>
                            <Button title='True!' color='red' onPress={()=>{ctx.toggleQuestion)}} />
                            <Button title='False' color='green' onPress={()=>{}} />
                    </View>
                )

            }

我的经验

当Button File进入debug语句时,我可以检查变量“ ctx”,它完全可用(包括ctx.toggleQuestion)。但是,该功能不会触发,因为未捕获上下文文件中的debug语句。

您可以如何帮助我: -解释为什么它没有被抓住 告诉我我的方法是行得通还是行不通 -如果您知道更好的方法,请这样说。

谢谢

1 个答案:

答案 0 :(得分:0)

好的,如果您可以在检查器中看到ctx.toggleQuestion,则错误是(除非您有错字...)

onPress={()=>{ctx.toggleQuestion)}} (this line doesnt actually call the function. In fact it doesn't do anything)

应该是

onPress={()=>{ctx.toggleQuestion()}}