Javascript 为什么在React.memo中的'prev'和'curr'的值总是相同?
父组件:Javascript 为什么在React.memo中的'prev'和'curr'的值总是相同?,javascript,reactjs,react-redux,react-hooks,Javascript,Reactjs,React Redux,React Hooks,父组件: const [data, setData] = useState([]); useEffect(() => { const exclusionsWithDeviceNames = Object.values(JSON.parse(JSON.stringify(exclusions))).map(exclusion => { exclusion['deviceNames'] = exclusion.devices.map(deviceId =&g
const [data, setData] = useState([]);
useEffect(() => {
const exclusionsWithDeviceNames = Object.values(JSON.parse(JSON.stringify(exclusions))).map(exclusion => {
exclusion['deviceNames'] = exclusion.devices.map(deviceId =>
devices[deviceId]
? devices[deviceId].name
: `${t('notAvailable')}: ${t('agentGuidWithId', {guid: deviceId})}`,
)
return exclusion
}, [])
setData(exclusionsWithDeviceNames)
}, [exclusions, devices])
...
...
<CustomTable
data={data}
/>
const[data,setData]=useState([]);
useffect(()=>{
const exclusionsWithDeviceNames=Object.values(JSON.parse(JSON.stringify(exclusions))).map(exclusion=>{
排除['deviceNames']=排除.devices.map(deviceId=>
设备[设备ID]
?设备[deviceId]。名称
:`${t('notAvailable')}:${t('agentGuidWithId',{guid:deviceId})}`,
)
退货排除
}, [])
设置数据(排除开关设备名称)
},[除外条款、设备])
...
...
自定义组件:
const areEqual = (prev, curr) => {
if (
curr.devicesSelected === prev.devicesSelected &&
(isEmpty(xorWith(curr.data, prev.data, isEqual)) ||
curr.columns === prev.columns)
) {
return true
} else return false
}
class CustomTable extends React.Component<Props> {
public render() {
const {data} = this.props
return (
<MUIDataTable
data={data}
/>
)
}
}
export const CustomTable = withStyles(styles)(
React.memo(CustomTable, areEqual),
)
const areEqual=(上一个,当前)=>{
如果(
当前设备已选===上一个设备已选&&
(isEmpty(xorWith(curr.data,prev.data,isEqual))||
当前列===上一列)
) {
返回真值
}否则返回false
}
类CustomTable扩展了React.Component{
公共渲染(){
const{data}=this.props
返回(
)
}
}
export const CustomTable=带有样式(样式)(
反应备忘录(CustomTable,areEqual),
)
在areEqual
函数中,我不断得到相同的prev和curr值。。。
谁能帮我理解为什么