-反应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语句。
您可以如何帮助我: -解释为什么它没有被抓住 告诉我我的方法是行得通还是行不通 -如果您知道更好的方法,请这样说。
谢谢
答案 0 :(得分:0)
好的,如果您可以在检查器中看到ctx.toggleQuestion,则错误是(除非您有错字...)
onPress={()=>{ctx.toggleQuestion)}} (this line doesnt actually call the function. In fact it doesn't do anything)
应该是
onPress={()=>{ctx.toggleQuestion()}}