我正在将Ionic与ReacJS和Redux一起使用,我在元素的位置遇到了问题
未重新渲染
在第一次加载之后,即使
状态变化
.
这是代码
var categoriesTemplate = [{name:'Science', selected:false}, ... ]
const categories = useSelector((state: any) => {
console.log("Updating State")
let cat = state.categories
for (let c of cat) {
for (var category of categoriesTemplate) {
if (category.name === c) {
category.selected = true
}
}
}
return categoriesTemplate
})
const dispatch = useDispatch()
const toggleCategory = (categorySelected: string) => {
console.log("Toggle + Dispatch")
for (var category of categories) {
if (category.name === categorySelected) {
category.selected = !category.selected
}
}
let newCategories = categories.filter(c => { return c.selected }).map(c => c.name)
dispatch(setCategoriesState(newCategories))
}
第一次运行加载所有
categoriesTemplate
与财产
selected
到
false
工作得很好。
当我触发
toggleCategory()
我明白了
category
(从Redux获取)
dispatch()
)使用新值正确更新,但元素不会重新呈现。
我已经记录了状态更新和渲染代码
return (
// Some React Components
{
categories.map(l => {
console.log("Rendering")
return ( ... )
})
}
// Some React Components
)
这是日志,您可以看到初始化已正确呈现(首先
"Updating State"
+
"Rendering"
),但在触发后
切换类别()
状态从Redux更新
“正在更新状态”
而元素是
不
“渲染”
我错过了什么吗?
Ps我没有从reducer和action发布代码,因为它有效,因为更新的值达到了我的
类别
状态,并且不想添加熵,但如果你需要,我可以发布它。