我正在尝试使用 redux 值来设置使用 useState 的 react 组件的初始状态。当我尝试设置 setIsStar 的状态时,它说 currentChannelName 为 null。我怎样才能避免这种情况?或者有没有其他方法

const currentChannel = useSelector(state => state.channel.currentChannel);
   const currentChannelName = currentChannel.name;


  const [isStar, setIsStar] = useState({
    [currentChannelName]: true
  });

最佳答案

可能的解决方案是将其与 useEffect 结合使用:

const currentChannel = useSelector(state => state.channel.currentChannel);
const currentChannelName = currentChannel.name;

useEffect(() => {
    if(currentChannelName) {
        setIsStar({[currentChannelName]: true});
    }
}, [currentChannelName]); // listen only to currentChannelName changes

const [isStar, setIsStar] = useState(currentChannelName ? {
    [currentChannelName]: true
}: {});

`

10-08 01:08