Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 错误:重新渲染的次数太多。react限制渲染的数量以防止无限循环_Javascript_Reactjs_Redux_State - Fatal编程技术网

Javascript 错误:重新渲染的次数太多。react限制渲染的数量以防止无限循环

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

调用映射到state的todoList似乎是导致问题的原因,但我不知道为什么…如何使我所在状态的todo数组显示在表中而不出现此错误

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([]),现在我可以看到数据了。