ミスリルは初めてですが、本当に好きになりたいです。数週間前、状態管理に React と Redux を使用してデモ アプリをコーディングしました。ライブラリを使用して 2 つを接続しましたが、すべて機能し、http://curiousercreative.com/demos/bankDemo/で確認できます。Mithril を読み、読んだ内容の多くを気に入った後、同じデモ アプリを Mithril + Redux に翻訳することにしましたが、Mithril にマウントされたコンポーネントを更新/再描画することができないため、Redux ストアを更新します。 (状態) が UI に反映されることはありません。私のアプリの js/app.js 行 ~144-162 から、Redux コールバックと 2 つの最上位 Mithril コンポーネントがマウントされ、状態が渡されます。
// redraws Mithril whenever an action is dispatched
store.subscribe(function () {
console.log('happening');
m.redraw.strategy('all');
m.redraw(true);
});
// Render Mithril
// content
m.mount(
document.getElementById('content'),
m.component(App, store.getState())
);
// nav
m.mount(
document.getElementById('navContainer'),
m.component(Nav, store.getState())
);
http://curiousercreative.com/demos/bankDemo-mithril/でコンソールを開くと、新しいリンクをクリックするたびにログ エントリが表示されます (Redux ステート ストアを更新するハッシュが変更されます)。上記のコードでは、ログが発生するたびにミスリルの強制再描画が発生するはずですが、もちろん UI は変更されません。その動作を、上記の React デモ アプリと比較してください。アプリの js/components.js ファイルでは、2 つの最上位コンポーネントがこの状態オブジェクトを引数として受け取り、子コンポーネントに渡します。
var App = {
controller: function (args) {
this.activePageId = args.activePageId;
this.accounts = args.accounts;
...
var Nav = {
controller: function (args) {
this.activePageId = args.activePageId;
this.accounts = args.accounts;
...
ミスリルが再描画されないのはなぜですか?