reactjs - 状态和道具的使用
问题描述
我想用 对我的表进行排序insuranceList
。它像这样从组件传递
<DashboardAddInsuranceStep2
insuranceList={insuranceSearchList}
/>
仪表板AddInsuranceStep2.js
this.state:{
insuranceList: props.insuranceList
}
sort(event) {
const {order} =this.state;
let {insuranceList} = this.props;
order[event.target.id]=! order[event.target.id];
insuranceList= _.orderBy(insuranceList, (o)=> typeof o[event.target.id] === 'string' ? o[event.target.id].trim().toLowerCase() : o[event.target.id], order[event.target.id] ? 'asc' : 'desc');
this.setState({
orderby: event.target.id,
insuranceList: insuranceList,
order
});
}
render(){
const { insuranceList} = this.props;
const {order,insuranceList}= this.state;
<tr>
<th id='Adjuster' onClick={this.sort}>Adjuster{order.Adjuster?<i className="fa fa-sort-asc"/> : <i className="fa fa-sort-desc"/>}</th>
</tr>
}
由于insuranceList
来自组件,我在道具中声明了它。
当需要排序时,我将其声明为状态。
执行此错误时发生。
如何避免这种情况?
解决方案
您正在解构状态和道具,并为两者赋予相同的名称,相反,您可以使用 asthis.state.insuranceList
和this.props.insuranceList
或者您可以在解构时更改常量的名称,例如
const { insuranceList: propsInsuranceList } = this.props;
const { insuranceList } = this.state;
当你使用它们propsInsuranceList
时,当你想从道具中引用它们时
推荐阅读
- c++ - 设置 openCL SDK
- c# - 如何通过 DllImport 将双精度数组从 c# 传递到 c++
- windows - 如果不满足条件,如何退出巧克力安装?
- android - Android Xamarin 中的 Android 6.x 中的 ProgressBar.SetProgress 崩溃
- flutter - 在导航中使用带有 GlobalKeys 的小部件
- html - 春季启动 java.lang.NullPointerException: null
- php - 保存发送的firebase推送通知的正确方法是什么
- react-native - 无法连接到节点 infura
- ios - iOS:Firebase removeValue 似乎正在破坏数组数据?
- python - 预期的二维数组,改为标量数组