[英]Store change doesn't re-render computed function in component
我在React / MobX遇到問題時看到了組件中商店的變化。 這是我得到的:
每當我單擊列表中的任何按鈕元素時,它都會更改狀態(存儲正在更改),但是Buttons組件不會重新呈現,因此我將其值視為一個舊值。 手動重新渲染(改變顯示按鈕狀態的兩倍)后,列表將正確渲染,直到我再次單擊。
這是造成問題的代碼:
商店:
export default class ColumnStore {
constructor(columns) {
this.showed = extendObservable(new Map());
columns.map(column => {
this.showed.set(column.id, column.show);
});
}
@action changeShow(showId, showValue) {
if (this.showed.has(showId)) {
this.showed.set(showId, showValue);
}
}
}
我想到了。 不幸的是, 這不是我介紹的代碼中的問題 = /
問題是我的PHPStorm自動從' mobx / lib / mobx '中添加了mobx元素的導入 (應該只是' mobx ')。 這導致打開另一個mobx實例。
你需要改變你的店的構造函數使用observable
,而不是extendObservable
為創作的showed
:
class ColumnStore {
constructor(columns) {
this.showed = observable(new Map());
columns.map(column => {
this.showed.set(column.id, column.show);
});
}
一種更干凈的方法是將observable
用作裝飾器:
class ColumnStore {
@observable showed = new Map();
constructor(columns) {
columns.map(column => {
this.showed.set(column.id, column.show);
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.