【发布时间】:2020-11-15 05:35:02
【问题描述】:
在 useEffect 获取数组并将其分派到我的 redux 状态后,我正在尝试映射员工列表。如果我控制台记录它,我会看到一个充满对象的数组,但我的组件似乎没有重新渲染。有什么建议吗?
import React, { useEffect } from 'react'
import { useSelector, useDispatch } from 'react-redux'
import { setEmployees } from '../redux/reducers/employeeListReducer'
import employeesService from '../back-end/services/employees'
const EmployeeList = ({ }) => {
const dispatch = useDispatch()
const employees = useSelector(state => state.employeeList)
const user = useSelector(state => state.user)
employeesService.setToken(user.token)
useEffect(() => {
(async () => {
const employeeList = await employeesService.getAll()
dispatch(setEmployees(employeeList))
})();
}, [dispatch])
if (employees === null) {
return <p>Loading Employees...</p>
}
return (
<div>
{console.log(employees)}
{employees.map(e =>
<div key={e.id}>
{e.name} {e.phone} {e.email}
</div>
)}
</div>
)
}
export default EmployeeList
【问题讨论】:
-
我修好了,根本问题出在减速器上。我将 return [action.data] 更改为 return action.data,现在它可以正常工作了。我读了一篇关于在 reducer 中改变状态防止组件重新渲染的文章。
标签: reactjs react-redux use-effect