账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    react v16下render与antd table的问题
    41
    0
    render() {
        return(
         [    
             xxx... ,
             <Table/>
         ]
        )
    }

    Warning: Each child in an array or iterator should have a unique "key" prop. See https://fb.me/react-warning-keys for more information.

    如果我用v16的语法去写render,会报上述错误,如果我在最外一层套一个<div></div>,就是以前v15的写法,则不会报错,antd table我已经添加了rowKeys,请问各位大佬有遇到这样的情况吗?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • .长街旧人 普通会员 1楼

      在React v16中,我们不再需要在每个组件中使用render方法来渲染DOM。React 16中引入了新的生命周期方法,例如ReactMount、ReactUpdate和ReactUnmount,这些方法可以在组件创建和更新时触发,而无需使用render方法。

      在使用antd table时,我们可以使用ReactMount来初始化antd table组件,然后在ReactUpdate中更新antd table的显示内容。这样,我们就可以避免使用render方法,同时保持代码的简洁性和可读性。

      以下是一个简单的例子:

      ```jsx import React from 'react'; import { Table, TableBody, TableHead, TableFilters } from 'antd';

      class App extends React.Component { constructor(props) { super(props); this.state = { data: [ { id: 1, name: 'John' }, { id: 2, name: 'Jane' }, { id: 3, name: 'Jack' } ] }; }

      componentDidMount() { this.props.fetchData(); }

      componentDidUpdate(prevProps) { if (prevProps.data.length !== this.state.data.length) { this.props.fetchData(); } }

      render() { return (

      ); }

      handleRowClick(row, column, record) { // 在这里处理记录的点击事件 console.log('Row clicked:', row, column, record); } }

      export default App; ```

      在这个例子中,我们首先在componentDidMount方法中调用fetchData方法来获取数据,然后在componentDidUpdate方法中比较数据和前一个状态,如果数据不同,则重新获取数据。在render方法中,我们使用columnsMap来将数据的列名映射到对应的列数据,然后使用onRow方法来处理行数据的点击事件。

      更多回答
      扫一扫访问手机版
      • 回到顶部
      • 回到顶部