reactjs - 将对象添加到数组(使用 React 中的 Hooks)

标签 reactjs react-hooks

我想使用 Hooks 将一个对象添加到 React 数组中, 我正在聊天,我想向消息数组中添加一条新消息,

我尝试过这个:

setMessages([...messages, newMessage]);

这里是更多代码:

const [messages, setMessages] = useState(false);

useEffect(() => {
    socket.open();

    loadMessages();

    return () => {
      socket.close();
    };
  }, []);

useEffect(() => {
    socket.on("send message", data => {
      setMessages([...messages, data]);
    });

    socket.on("delete message", data => {
      setMessages(messages.filter(message => message.id !== data.id));
    });
  });

async function loadMessages() {
    try {
      const dataMessages = await axios.get(
        `http://localhost:5000/api/chat/messages`
      );
      setMessages(dataMessages.data);
    } catch (error) {
      console.log(error);
    }
  }

但是我得到了TypeError:“messages is not iterable”,

有人可以帮助我吗?谢谢!

最佳答案

您正在将消息设置为 bool 值 改变这个

const [messages, setMessages] = useState(false);

const [messages, setMessages] = useState([]);

然后向数组添加元素,也不要改变消息数组。

希望对你有帮助

关于reactjs - 将对象添加到数组(使用 React 中的 Hooks),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58429461/

相关文章:

javascript - useRef : state becomes undefined after rendering

javascript - React navigation didfocus 事件监听器在类组件和功能组件之间的工作方式不同

javascript - 如何在reactjs中连接登录API

javascript - 如何在react js中操作字符串变量

javascript - 我无法在React上正确调用其他组件中的模态组件

javascript - 如何修复 "... is not a function"错误?

reactjs - 如何使用组件中的 Redux-hooks useDispatch 在操作中通过 API 调用来调用函数?

reactjs - 有没有办法在 MockedProvider - Apollo Client 中模拟 refetch?

javascript - React - 未捕获的类型错误 : Cannot read property 'func' of undefined

javascript - React 函数高阶组件