在 React 中更新 useState 后如何重新渲染?

How to re-render after updating useState in React?

我想要的是,在我按下按钮后,useState 已经刷新,我想刷新内容。

这是我的代码:

import React, {useState, useEffect} from 'react';
import MessComponents from './messConatiner';


function Conatiner() {
  const [messes, setMesses] = useState([
    {name: "Chater1: ", mess: "Hi", status: "left"},
    {name: "", mess: "Hi!", status: "right"},
    {name: "Chater2: ", mess: "I have some trouble with react...", status: "left"}
  ]);

  function Send(){
    let list = messes;
    list.push({name: "", mess: document.querySelector("input").value, status:             "right"});
    setMesses(list);
    console.log(messes);
    }

  return (
    <div className="container" id="cont">
        <MessComponents messes={messes}/>
        <input className="chat-input" type="text" /> 
        <button onClick={Send}>Send</button>
    </div>
  );
}

export default Conatiner;
  1. 每当您调用 setMesses() 时,这将自动 re-render。要补充的一件事是函数发送应该是小写的,只大写组件而不是常规函数。

  2. 问题是您试图直接改变语句中的数组 list.push()

尝试使用这个而不是 push

let list = [...messes, {name: "", mess: document.querySelector("input").value, status:  "right"} ]
setMesses(list)