React三元运算符如何调用2个函数?

zuz*_*zuu 0 javascript conditional-operator reactjs

我如何在三元运算符中调用两个函数?\n我尝试通过添加 && 但随后它只调用第一个函数并忽略第二个函数。

\n
e.g.\nsetState(date) && dispatch(paypal_error({ time: date }))\n
Run Code Online (Sandbox Code Playgroud)\n

这是完整的代码

\n
const handleDateChange = (date) => {\n    setDisablePing(true);\n    const minutes = parseInt(dayjs(date).format('HH') * 60) +\n      parseInt(dayjs(date).format('m'))\n\n     if(minutes > pauseStartMin && minutes < pauseEndMin){\nsetState(\n          new Date(0, 0, 0, pauseEndHour, pauseEndMinute + deliveryTime)\n        ),\n        dispatch(\n          paypal_error({\n            time: new Date(\n              0,\n              0,\n              0,\n              pauseEndHour,\n              pauseEndMinute + deliveryTime\n            ),\n          }),\n        \n        toast.error(\n          `Zurzeit Pause. Bestellungen ab ${dayjs(\n            newPauseEndHour.toString(),\n            'H'\n          ).format('HH')}:${dayjs((newPauseEndMin + 1).toString(), 'm').format(\n            'mm'\n          )} Uhr wieder m\xc3\xb6glich`,\n          {\n            position: toast.POSITION.BOTTOM_RIGHT,\n          }\n        )\n     }else{\n      setState(date);\n      dispatch(paypal_error({ time: date }))\n     }\n  };\n
Run Code Online (Sandbox Code Playgroud)\n

xeh*_*puk 5

使用逗号运算符

(setState(date), dispatch(paypal_error({ time: date })))
Run Code Online (Sandbox Code Playgroud)

你的函数中有 JSX 不属于那里。去掉它:

const handleDateChange = (date) => {
    parseInt(dayjs(date).format('HH') * 60) +
        parseInt(dayjs(date).format('m')) >
        pauseStartMin &&
        parseInt(dayjs(date).format('HH') * 60) +
        parseInt(dayjs(date).format('m')) <
        pauseEndMin ? (
        setState(new Date(0, 0, 0, pauseEndHour, pauseEndMinute + deliveryTime)),
        dispatch(paypal_error({
            time: new Date(
                0,
                0,
                0,
                pauseEndHour,
                pauseEndMinute + deliveryTime
            ),
        }))
    ) : (
        setState(date), dispatch(paypal_error({ time: date }))
    );
};
Run Code Online (Sandbox Code Playgroud)

但这里不需要三元运算符,只需使用if-else,它更容易阅读:

const handleDateChange = (date) => {
    const minutes = parseInt(dayjs(date).format('HH') * 60) +
        parseInt(dayjs(date).format('m'));
    if (minutes > pauseStartMin &&
        minutes < pauseEndMin) {
        setState(new Date(0, 0, 0, pauseEndHour, pauseEndMinute + deliveryTime));
        dispatch(paypal_error({
            time: new Date(
                0,
                0,
                0,
                pauseEndHour,
                pauseEndMinute + deliveryTime
            ),
        }));
    } else {
        setState(date);
        dispatch(paypal_error({ time: date }));
    };
};
Run Code Online (Sandbox Code Playgroud)