Reactjs 上下文API:在上下文中使用函数';s状态以更改上下文变量。函数为';t执行
-反应16.5 -虽然我认为这个问题是react问题,而不是react原生问题,但这是我的react原生版本。My package.json没有react本机版本,而是: “本机反应”:” 目标:从另一个文件更改上下文(上下文API)中变量的值 方法:我在上下文中有一个函数来切换一个值,并在另一个调用该值的文件中有一个按钮 问题:当我启动按钮时,该功能不执行。尽管我的上下文变量(称为“ctx”)在其调用的范围内可用,但仍会发生这种情况 这是它自己的文件中的上下文(我们称之为“上下文文件”): 这里是调用函数的地方(我们称之为“按钮文件”):Reactjs 上下文API:在上下文中使用函数';s状态以更改上下文变量。函数为';t执行,reactjs,react-native,Reactjs,React Native,-反应16.5 -虽然我认为这个问题是react问题,而不是react原生问题,但这是我的react原生版本。My package.json没有react本机版本,而是: “本机反应”:” 目标:从另一个文件更改上下文(上下文API)中变量的值 方法:我在上下文中有一个函数来切换一个值,并在另一个调用该值的文件中有一个按钮 问题:当我启动按钮时,该功能不执行。尽管我的上下文变量(称为“ctx”)在其调用的范围内可用,但仍会发生这种情况 这是它自己的文件中的上下文(我们称之为“上下文文件”): 这
if(保持类型==“true\u false”){
调试器;
返回(
{ctx.toggleQuestion)}}/>
{}} />
)
}
我的经验
当按钮文件出现在调试语句中时,我可以检查变量“ctx”,它完全可用(包括ctx.toggleQuestion)。但是,函数不会启动,因为上下文文件中的调试语句没有被捕获
您如何帮助我:
- 解释为什么它没有被抓到
- 告诉我我的方法是否有效
- 如果你知道更好的方法,请说出来
onPress={()=>{ctx.toggleQuestion}}(此行实际上没有调用函数。事实上,它什么都没有做)
应该是
onPress={()=>{ctx.toggleQuestion()}
确定如果您可以在检查器中看到ctx.toggleQuestion,则错误是(除非您有输入错误…)
onPress={()=>{ctx.toggleQuestion}}(此行实际上没有调用函数。事实上,它什么都没有做)
应该是
onPress={()=>{ctx.toggleQuestion()}
为什么不使用React.createContext
来实际使用呢?此外,您正在使用状态内部的方法创建组件。这对React来说是不典型的,对我来说也没什么意义。另外,没有关于如何在其他组件中初始化ConfigProvider
的信息。为什么不使用React.createContext
来实际使用?此外,您正在使用状态内部的方法创建组件。这对React来说是不典型的,对我来说也没什么意义。此外,没有关于如何在其他组件中初始化ConfigProvider
的信息。
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>
)
}