Javascript 工厂组按钮未设置状态-反应本机

Javascript 工厂组按钮未设置状态-反应本机,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我是新的编码,反应原生和移动应用程序开发。 我正在尝试建立水提醒应用程序 我有一个FAB group按钮,显示不同类型的饮料。当用户用(汉堡菜单图标)点击第二个FAB按钮时,它会打开,我想通过选择的水量来设置状态。然后将该状态传递给progress circle以计算进度 但是,很明显,我无法正确更新状态,因为我收到了progress.circle收到NaN值的错误 const目标=2000; 导出默认类主屏幕扩展React.Component{ 静态导航选项={ 标题:空 }; 状态={ 进

我是新的编码,反应原生和移动应用程序开发。 我正在尝试建立水提醒应用程序

我有一个FAB group按钮,显示不同类型的饮料。当用户用(汉堡菜单图标)点击第二个FAB按钮时,它会打开,我想通过选择的水量来设置状态。然后将该状态传递给progress circle以计算进度

但是,很明显,我无法正确更新状态,因为我收到了progress.circle收到NaN值的错误

const目标=2000;
导出默认类主屏幕扩展React.Component{
静态导航选项={
标题:空
};
状态={
进展:0,
醉酒:0,,
开放:假
};
drinkOther=饮料=>{
让瓶子=500;
设大瓶=1000;
让咖啡=200;
让茶=200;
让progress=this.state.progress;
this.setState(prevState=>({
醉酒的,醉酒的,
进展:(prevState.Duke+饮料)/目标
}));
};
render(){
返回(
this.setState({open})}
onPress={()=>{
this.setState({open:!this.state.open});
}}
style={style.fab}
颜色={“白色”}
主题={{colors:{accent:colors.tintColor}}
/>
);
}

看看这个
setState
调用
drinkOther

this.setState(prevState => ({
  drunk: prevState.drunk + drink,
  progress: (prevState.drunk + drink) / goal
}));
onPress: this.drinkOther("juice")
如果你看一下
饮料
来自何处,你要传递给
饮用水者

this.setState(prevState => ({
  drunk: prevState.drunk + drink,
  progress: (prevState.drunk + drink) / goal
}));
onPress: this.drinkOther("juice")

您试图将字符串“juice”、“coffee”或其他任何内容添加到
ducked
总数中,然后将其除以一个数字,该数字当然返回NaN。

您试图除以“goal”,但事件处理程序中似乎从未定义过goal。这就是为什么在我的主屏幕上方有一个NaNI定义的目标,因为它也被其他事件处理程序(其他glass FAB按钮)使用。我应该将@yourfavoritedevmake
goal
一个类成员移动到哪里,或者将其置于
状态
@kai我将其更改为状态,收到此错误。”更新artshape null类型的阴影节点中的属性d时出错“您试图用数字除字符串。@啊,我明白了。理想的解决方案是什么?为每种饮料使用if语句或开关?您可以将饮料值放入对象中,如:
let drinks={瓶子:500,大瓶子:1000…}
,然后使用drinkOther参数获取对象键:
dunder:
非常好的主意。现在我收到了这个错误。”警告:无法在现有状态转换期间更新(例如在
渲染
)中)。渲染方法应该是道具和状态的纯函数。“我想我正在render Method中立即调用drinkOther参数我在onPress中做错了什么。”。我把它从“onPress:this.drinkOther(“果汁”)改为“()=>onPress:this.drinkOther(“果汁”)。在此更改之后,未引发任何错误