相关文章推荐
风流的火柴  ·  智能机器人精品公开课·  1 年前    · 
实际效果:页面上的列表并未更新。

import {List, Button} from 'antd';
import React, {useState, useEffect} from 'react';
const data = ['Anoyi', 'com'];
export default () => {
  const [lines, setLines] = useState<string[]>([]);
  useEffect(() => setLines(data), []);
  const addLine = () => {
    data.push('aaa');
    setLines(data);
  return (
      <List bordered dataSource={lines} renderItem={item => <List.Item>{item}</List.Item>}/>
      <Button type="primary" onClick={addLine}>Add</Button>

※ 解决办法
setLines 赋值新的数组对象,而不是原数组对象的引用。

import {List, Button} from 'antd';
import React, {useState, useEffect} from 'react';
const data = ['Anoyi', 'com'];
export default () => {
  const [lines, setLines] = useState<string[]>([]);
  useEffect(() => setLines(data), []);
  const addLine = () => {
    data.push('aaa');
    setLines([...data]);
    // setLines(data.slice());   // 二选一
  return (
      <List bordered dataSource={lines} renderItem={item => <List.Item>{item}</List.Item>}/>
      <Button type="primary" onClick={addLine}>Add</Button>