Итак, я хочу создать HOC, который возвращает компонент, который будет подключен к redux, то, что компонент будет прослушивать, определяется тем, что передается, поэтому будет динамическим.Вот мой код, но проблема заключается в том, что когда что-то в состоянии изменяется, это не повторный рендеринг возвращаемого компонента.
Любая помощь будет отличной!
export const createSectionList = (providers: SectionListProviders) => {
const providerNames = Object.keys(providers)
const mapped = {}
const mapStateTopProps = (state) => {
providerNames.forEach((providerName) => {
const selector = providers[providerName].data
if (typeof selector === 'function') {
mapped[`${providerName}`] = selector(state)
} else {
mapped[`${providerName}`] = selector
}
})
return mapped
}
class GeneratedSectionList extends Component {
render() {
const sections: [SectionListProvider?] = []
providerNames.forEach((providerName) => {
const {title, renderItem, renderSectionHeader} = providers[providerName]
const data = this.props[providerName] || []
sections.push({
key: providerName,
title,
data,
renderItem
})
})
return (
<SectionList
stickySectionHeadersEnabled={true}
renderSectionHeader={({section}) => {
const providerName = section.key
const renderSectionHeader = providers[providerName].renderSectionHeader
return renderSectionHeader === undefined ?
<Text style={{fontWeight: 'bold'}}>{'blood'}</Text>
:
renderSectionHeader
}}
sections={sections}
/>
)
}
}
return connect(mapStateTopProps)(GeneratedSectionList)
}
И поставщики разделов будут выглядеть примерно так, например, с указанием селектора
export default createSectionProvider({
title: 'Friends ✋',
renderItem: ({item}) => {
return (
<UserCell
key={item.userId}
user={item}
renderer={WideRenderer}
actionView={BuzzButtonContainer}
onPress={user => {
console.log('pressed', user)
}}
onAction={(user, action) => {
console.log(action, user)
}}
/>
)
},
data: (state) => getFriends(state)
})
Любая причина, почему обновления не будут вызывать повторную визуализацию?Будет ли это как-то связано с динамическим созданием материала mapStateToProps?
Спасибо.