【问题标题】:How can I change the array key value before passing to the state in react?如何在传递到反应状态之前更改数组键值?
【发布时间】:2021-12-04 15:10:45
【问题描述】:

问题,我有这个来自后端的状态它是一个消息数组,将使用 useState 存储在状态中。此状态将在子组件中传递。问题是我想在将特定键存储到状态之前更改它的值。

示例

消息数组示例数据

const messages = [
      {
        value: 'sample value one',
        status: false,
      },
      {
        value: 'sample value two',
        status: false,

      },
    ];

使用选择器

const messageGetById = useSelector((state) => state.messageGetById);
  const { message } = messageGetById;

使用效果

useEffect(() => {
    if (message) {
      setCurrentMessage(message);
    }
  }, [message]);

我想要的输出是在将消息传递给 setCurrentMessage 之前,status 的所有值都将更改为 true。

谢谢!

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    您可以使用 map 方法来映射数组并将状态更改为 true。

      useEffect(() => {
        if (message) { 
        const newMessages = messages?.map((mess) => {
            return {...mess, status: true}})
          setCurrentMessage(newMessages);
        }}, [message]);
    

    【讨论】:

      【解决方案2】:

      useEffect设置映射状态

      useEffect(() => {
        const data = [...message];
        if (data.length > 0) {
          data.map((ele) => ({
            value: "YOUR CHANGED VALUE",
            status: ele.status,
          }));
          setCurrentMessage(data);
        }
      }, [message]);
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-01-16
        • 1970-01-01
        • 2019-04-29
        • 2021-01-23
        • 1970-01-01
        • 2018-06-06
        相关资源
        最近更新 更多