reactjs - React 重新渲染限制问题
问题描述
我收到上面的错误“重新渲染太多......”,我试图找出代码有什么问题。根据我在 Chrome 控制台中看到的内容,错误似乎出在第三方库中,而不是我在这里写的。如果我错了,请告诉我。这是我的依赖项:“react”:“^17.0.2”,“react-dom”:“^17.0.2”,“react-icons”:“^4.2.0”,“react-scripts”:“4.0 .3", "web-vitals": "^1.1.2"
应用程序.js
import {useState} from 'react'
import Header from './components/Header'
import Tasks from "./components/Tasks";
const App = () => {
const [tasks, setTasks] = useState(
[
{
id: 1,
text: 'Doctor\'s appt',
day: 'Feb 5th at 2:30p',
reminder: true
},
{
id: 2,
text: 'Meeting at School',
day: 'Feb 6 at 1:30p',
reminder: true
},
{
id: 3,
text: 'Meeting at Church',
day: 'Feb 7 at 6:30p',
reminder: true
}
]
);
// Delete Task
const deleteTask = (id) => {
// console.log('delete', id)
//Takes in a function where for each task, filter the data where the task id is not
//equal the the id. This deletes tasks when the 'x' is clicked.
setTasks(tasks.filter((task) => task.id !== id))
}
//Toggle Reminder
const toggleReminder = (id) => {
setTasks(tasks.map((task) =>
task.id === id ? {...task, reminder: !task.reminder } : task
)
)
}
return(
<div className="container">
<Header />
{tasks.length >0 ? (
<Tasks tasks={tasks}
onDelete={deleteTask} onToggle={toggleReminder()} />
):(
'No Tasks to Show'
)}
</div>
)
}
export default App
任务.js
import Task from './Task'
const Tasks = ({tasks, onDelete, onToggle}) => {
return (
<>
{tasks.map((task) => (
<Task key={task.id} task={task}
onDelete={onDelete}
onToggle={onToggle}/>
))}
</>
)
};
export default Tasks
任务.js
import {FaTimes} from "react-icons/fa";
const Task = ({task, onDelete, onToggle}) => {
return (
<div
className={`task ${task.reminder && 'reminder'}`}
onDoubleClick={() => onToggle(task.id)}>
<h3>
{task.text}<FaTimes style={{color:'red', cursor:'pointer'}}
onClick={() => onDelete(task.id)}/>
</h3>
<p>{task.day}</p>
</div>
)
}
export default Task
解决方案
因为你调用toggleReminder
了 render: onToggle={toggleReminder()}
。只需像这样更新:
onToggle={toggleReminder}
推荐阅读
- r - 如果西装是红心,我如何使用 substr() 来提取卡片向量?
- html - 根据内容长度更改页脚属性
- spring - @RequestMapping 不会将我重定向到我的网址
- julia - Julia中的指数积分
- python - 尝试阅读网站时请求网站超时 - Python
- python - 需要更正注释以按比例缩小并触摸圆环图
- ios - Kotlin Multiplatform Mobile 无法在 iOS 上运行:任务 ':shared:compileKotlinIosX64' 执行失败
- c# - C# .Net 10054 UDP 异常?原因,解决?
- google-analytics - 在 Google Analytics(2021 年)中查看超过 30 分钟的事件的事件参数
- function - 八度函数未定义