在函数中设置 useState 变量的值时出错
2021-09-08
52
我有一个按钮,按下时会调用一个函数。我想设置
startJob = false
。当我添加以下代码时,它给出了一个错误
TypeError: setJobStart is not a function. (In 'setJobStart(false)', 'setJobStart' is undefined)
我的代码 :
function App(){
const [arrived, setArrived ] = useState(false);
const [startJob, setJobStart ] = useState(false);
return(
<ActionButtons />
)
}
function ActionButtons ({arrived, startJob, dialer, directions}) {
return(
<Button title="Arrived" disabled={arrived} onPress={() => ArrivedOk()} buttonStyle={{ backgroundColor: '#0b77b0' }}></Button>
)})
我的函数 :
function ArrivedOk (setJobStart,startJob){
console.log("OK");
setJobStart(false);
// setArrived(true);
}
1个回答
您不必将
setJobStart
作为参数传递给
ArrivedOk
函数,因为它已在以下位置定义:
const [startJob, setJobStart ] = useState(false);
将
arrived
、
startJob
、
setJobStart
、
dialer
、
directions
作为
prop
传递给
ActionButtons
组件:
function App(){
const [arrived, setArrived ] = useState(false);
const [startJob, setJobStart ] = useState(false);
return(
<ActionButtons arrived={arrived} startJob={startJob} setJobStart={setJobStart}/> // <--- same for dialer and directions
)
}
注意
:如果您不打算在组件中使用
dialer
、
directions
额外 props,请不要传递它们
修改您的
ActionButtons
组件,如下所示这个:
function ActionButtons ({arrived, startJob, setJobStart, dialer, directions}) {
return(
<Button title="Arrived" disabled={arrived} onPress={() => ArrivedOk()} buttonStyle={{ backgroundColor: '#0b77b0' }}></Button>
)})
修改您的
ArrivedOk
函数如下:
并且不需要传递
startJob
,因为您可以直接从状态中获取
startJob
的值。
function ArrivedOk (startJob){
console.log("OK");
setJobStart(false);
// setArrived(true);
}
Sanket Shah
2021-09-08