Javascript 与shouldComponentUpdate一起使用时,对本机可拖动平面列表拖放重置作出反应

Javascript 与shouldComponentUpdate一起使用时,对本机可拖动平面列表拖放重置作出反应,javascript,react-native,user-interface,react-redux,react-native-draggable-flatlist,Javascript,React Native,User Interface,React Redux,React Native Draggable Flatlist,我正在开发一个react-native应用程序,其中一个列表使用react-native Dragable flatlist,不幸的是,我必须在组件中使用shouldComponentUpdate来处理另一个组件上其他列表项的数据,但在添加shouldComponentUpdate后,我的拖放不起作用,我可以拖放,但它会立即将整个列表重置为原始定位集 请帮助我提出一些建议,使拖放与shouldComponentUpdate一起工作,因为我不想破坏现有的功能 代码 `item-${testkey}

我正在开发一个react-native应用程序,其中一个列表使用react-native Dragable flatlist,不幸的是,我必须在组件中使用shouldComponentUpdate来处理另一个组件上其他列表项的数据,但在添加shouldComponentUpdate后,我的拖放不起作用,我可以拖放,但它会立即将整个列表重置为原始定位集

请帮助我提出一些建议,使拖放与shouldComponentUpdate一起工作,因为我不想破坏现有的功能

代码

`item-${testkey}`}
onMoveEnd={({data})=>{
this.setState({data});
}}
/>
public shouldComponentUpdate(下一步,下一步状态){
if(nextrops.data.length!==nextState.data.length){
这是我的国家({
数据:nextrops.data
})
}
返回真值
}

shouldComponentUpdate
不用于执行副作用。它用于减少道具更改的渲染计数,以提高性能。 shouldComponentUpdate应返回true或false,以确定组件是否应重新提交

您可以使用
componentdiddupdate
在道具更改反射后触发,或者
componentWillReceiveProps
在道具反射前触发

我建议像这样使用
componentdiddupdate

componentDidUpdate  = (prevProps, prevState) => {
  if (this.props.data.length !== this.state.data.length) {
     this.setState({
       data: nextProps.data
     })
   }

}

您不应该为此使用
shouldComponentUpdate
。如果您只是将
props.data
复制到
state.data
,为什么不直接使用
props.data

如果在每次更新中都需要复制,那么考虑使用另一个生命周期方法,如<代码>组件Debug Update < /C>或<代码> GETPrimeStestOffPrps。您也可以使用

组件WillReceiveProps
,但它已被弃用,应该避免使用

componentDidUpdate  = (prevProps, prevState) => {
  if (this.props.data.length !== this.state.data.length) {
     this.setState({
       data: nextProps.data
     })
   }

}