Я только начал использовать React Redux, так что я просто возился с ним над некоторыми из моих старых вещей.У меня есть компонент, который принимает реквизиты:
<DataTable dataType = {this.state.dataType}
drinkArray = {this.state.drinkArray}
foodArray = {this.state.foodArray}
sort = {this.sort}/>
Все, что делает DataTable, это сопоставление с любым массивом, выбранным dataType, и отображение некоторой информации в таблице.
<div sytle = {{textAlign: 'center'}}>
{(this.props.dataType === 'food' &&
<table className = 'foodTable'>
<tbody>
<tr>
<th>Name</th>
<th id = 'price' onClick = {(e) => {this.props.sort(e,'food')}}>Price</th>
<th id = 'stock' onClick = {(e) => {this.props.sort(e,'food')}}>Stock</th>
</tr>
{this.props.foodArray.map((x,i) => {
return (
<tr key ={i}>
<td>{x.name}</td>
<td>{x.price}</td
<td>{x.stock}</td>
</tr>
)
})
}
</tbody>
</table>
)}
//etc.
В основном проблема заключается в том, что я добавляю соединение с компонентом DataTable:
export default connect()(DataTable)
В этом случае я просто возился и не собирался ничего делать, но это вызывает странное поведение.не мог объяснить.Функция сортировки, которую я передал через реквизиты, больше не приводила к повторной визуализации DataTable.Тем не менее, если я изменю dataType родительского элемента нажатием кнопки, DataTable выполнит повторную визуализацию.И функция сортировки, и изменение dataType используют setState (), и я знаю, что функция сортировки вызывается и работает правильно, регистрируя ее на консоли.Родитель также перерисовывается при вызове функции сортировки.Если я удаляю соединение из компонента DataTable, функция сортировки снова перерисовывает DataTable.
Так что на самом деле мой вопрос заключается в том, почему смена одного из реквизитов через setState вызывает повторный рендеринг дочернего элемента, а изменение другого реквизита через setState - нет?Это всего лишь вопрос общего любопытства.