Skip to the content.

React-Hooks » useState


思考题

用下面的例子修改状态,会让组件重新渲染吗?

const [counter, setCounter] = useState({ a: 1, b: 2 });
counter.b = 4;
setCounter(counter);

组件不会重新渲染,但 counter 会改变

异步状态所潜藏的危机

const [counter, setCounter] = useState(10);
setCounter(20);
console.log(counter); // 此时counter的值,并不是20,而是10

惯常的接口传参请求

export default function AsyncDemo() {
  const [param] = useState<Param>({});
  const [listData, setListData] = useState<ListItem[]>([]);

  function fetchListData() {
    // @ts-ignore
    listApi(param).then(res => {
      setListData(res.data);
    })
  }

  function searchByName(name: string) {
    param.name = name;
    fetchListData();
  }

  return [
    <div>data list</div>,
    <button onClick={() => searchByName('Jone')}>search by name</button>
  ]
}

参见