Javascript 错误:重新渲染的次数太多。react限制渲染的数量以防止无限循环
调用映射到state的todoList似乎是导致问题的原因,但我不知道为什么…如何使我所在状态的todo数组显示在表中而不出现此错误Javascript 错误:重新渲染的次数太多。react限制渲染的数量以防止无限循环,javascript,reactjs,redux,state,Javascript,Reactjs,Redux,State,调用映射到state的todoList似乎是导致问题的原因,但我不知道为什么…如何使我所在状态的todo数组显示在表中而不出现此错误 import React, { useState, useEffect } from 'react'; import { connect } from 'react-redux'; import { getTodos } from '../../actions/todo'; //Bootstrap Table import BootstrapTable from
import React, { useState, useEffect } from 'react';
import { connect } from 'react-redux';
import { getTodos } from '../../actions/todo';
//Bootstrap Table
import BootstrapTable from 'react-bootstrap-table-next';
import paginationFactory from 'react-bootstrap-table2-paginator';
import * as ReactBootStrap from 'react-bootstrap';
const UserTable = ({ getTodos, todoList }) => {
useEffect(() => {
getTodos();
// eslint-disable-next-line
}, []);
const [todos, setTodos] = useState([]);
const [loading, setLoading] = useState(false);
const columns = [
{ dataField: 'id', text: 'ID' },
{ dataField: 'userId', text: "User's ID" },
{ dataField: 'title', text: 'Title of Todo' },
{ dataField: 'completed', text: 'Is this done?' },
];
setTodos(todoList);
return (
<BootstrapTable
keyField='id'
data={todos}
columns={columns}
pagination={paginationFactory()}
/>
);
};
const mapStateToProps = (state) => ({
todoList: state.todo.todoList,
});
export default connect(mapStateToProps, { getTodos })(UserTable);
import React,{useState,useffect}来自“React”;
从'react redux'导入{connect};
从“../../actions/todo”导入{gettoos};
//引导表
从“react bootstrap table next”导入引导可选项;
从“react-bootstrap-table2-paginator”导入分页工厂;
从“react bootstrap”导入*作为react bootstrap;
constusertable=({getTodos,todoList})=>{
useffect(()=>{
getTodos();
//eslint禁用下一行
}, []);
const[todos,setTodos]=useState([]);
const[loading,setLoading]=useState(false);
常量列=[
{dataField:'id',text:'id'},
{dataField:'userId',text:'User's ID},
{dataField:'title',text:'title of Todo'},
{dataField:'completed',text:'this done?',
];
setTodos(todoList);
返回(
);
};
常量mapStateToProps=(状态)=>({
todoList:state.todo.todoList,
});
导出默认连接(mapstatetops,{getTodos})(UserTable);
考虑避免直接在函数体内部设置状态-这将导致无休止的循环
不管怎样,为什么你想把它保持在州内?我建议你用这些道具做手术
return (
<BootstrapTable
keyField='id'
data={todoList} // todos directly from props
columns={columns}
pagination={paginationFactory()}
/>
);
返回(
);
这导致它setTodos(todoList)代码>。在初始化时使用它,并使用const[todos,setTodos]=useState(todoList)代码>这对我很有效,我删除了const[todo,setTodos]=useState([]),现在我可以看到数据了。