在 useEffect Reactjs 中使用 switch case 是一个好习惯吗?
Is it a good practice to use switch case in useEffect Reactjs?
我正在处理某些函数中的某些功能。基本上我在多个函数中处理一些状态。当特定状态更新时需要调用这些函数。现在有很多状态要更新。所以我尝试了这种方法,我为特定情况创建了一个函数,然后根据该值设置它们的状态,但它都在 useEffect 中。
useEffect(() => {
if (notificationAction && actualCase) {
switch (actualCase) {
case firstCase:
handleStatesBasedOnFirstCase();
break;
case firstCase:
handleStatesBasedOnSecondCase();
break;
}
}
}, [actualCase, notificationAction])
而且那个函数也是一个回调。
const handleStatesBasedOnFirstCase = useCallback(() => {
if (someState !== props.someState) {
// Setting some states here
}
}, [somestates...])
这是一个好习惯吗?或者我在初始化状态的时候就给出条件。
const [someState, setSomeState] = useState(props.someState || props.someOtherValue);
我认为在 useState 中设置 props 不是一个好习惯。这就是为什么我试图维护多个功能以根据适当的情况和条件设置适当的状态的原因。请帮助我。
根据 @Nikki9696 在评论中的回答,使用 reducer 就可以了。
我正在处理某些函数中的某些功能。基本上我在多个函数中处理一些状态。当特定状态更新时需要调用这些函数。现在有很多状态要更新。所以我尝试了这种方法,我为特定情况创建了一个函数,然后根据该值设置它们的状态,但它都在 useEffect 中。
useEffect(() => {
if (notificationAction && actualCase) {
switch (actualCase) {
case firstCase:
handleStatesBasedOnFirstCase();
break;
case firstCase:
handleStatesBasedOnSecondCase();
break;
}
}
}, [actualCase, notificationAction])
而且那个函数也是一个回调。
const handleStatesBasedOnFirstCase = useCallback(() => {
if (someState !== props.someState) {
// Setting some states here
}
}, [somestates...])
这是一个好习惯吗?或者我在初始化状态的时候就给出条件。
const [someState, setSomeState] = useState(props.someState || props.someOtherValue);
我认为在 useState 中设置 props 不是一个好习惯。这就是为什么我试图维护多个功能以根据适当的情况和条件设置适当的状态的原因。请帮助我。
根据 @Nikki9696 在评论中的回答,使用 reducer 就可以了。