开发者问题收集

在函数中设置 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);

arrivedstartJobsetJobStartdialerdirections 作为 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
 )
}

注意 :如果您不打算在组件中使用 dialerdirections 额外 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