問題タブ [mobx]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reactjs - mobx with react store not reflected in observer
As with all things react I'm trying to do something simple and I'm guessing I'm missing some obvious configuration wise all I'm trying to do is take a redux app and implement mobx.
My issue is that I trying to go to the route /user/12345
The store is being called - I am getting data back from the API but I'm getting a few exceptions the first is from mobx
Then as is somewhat expected a null value is blowing up in the presenter because the store is not yet loaded
Then in the store itself because of the returned api/promise where my user is being set a mobx exception
I have added @action to the store function that is calling the api so I'm not sure what I've got messed up - and before I bubble gum and hodge podge a fix I would rather have some feedback how to do this correctly. Thanks.
UserStore.js
index.js
routes-mob.js
MobApp.js
.component/userdetail/index.js (container?)
.component/userdetail/presenter.js
Forgive me if its a little messy its what I've pieced together for how to implement mobx from various blog posts and the documentation and stack overflow questions. I've had a hard time finding a soup-to-nuts example that is not just the standard todoapp
UPDATE
Basically the fix is a combination of @mweststrate answer below adding the action to the promise response
}
and including a check in the presenter that we actually have something to display
mobx - MobX - 配列内の単一の項目を選択し、他のすべての項目を選択解除しますか?
次の観測可能な検索エンジンの配列があります。
ユーザーは、UI から一度に 1 つだけ選択できる必要があります。yahoo
たとえば、彼らが選択した場合、yahooは取得selected: true
し、他のプロバイダーは取得しますselected: false
このアクションはクリックを処理します。
reactjs - MobX が追加のみのドメイン モデルを持つアプリケーションに適していないのはなぜですか?
MobX の作成者である Michel Westrate 氏は、次のように述べています。
MobX は、状態モデルで CRUD のような操作を実行する必要があるアプリの構築に適しています。追加のみのドメイン モデルを持つアプリケーションにはあまり適していません。
私の理解が正しければ、「追加のみのドメイン モデル」とは、継続的に追加されるデータのフィード/リストで構成されるアプリ (Facebook など) を指す場合があります。
「追加のみのドメイン モデル」とはどういう意味ですか? MobX がそれに適していないのはなぜですか?
javascript - 配列の要素を削除すると、複数の再レンダリングが発生します
MobX の観測可能な配列があり、複数の要素を lodash のremoveで削除したいと考えています。これにより、配列内のすべての要素が再レンダリングされます。
のすべての出現を削除しようとすると1
、Rendering...
要素ごとに 1 回ログに記録されます。
一度だけ再レンダリングするようにするにはどうすればよいですか?
ruby-on-rails - mobx-react からオブザーバーをインポートすると、「Uncaught TypeError: Super expression must be either null or a function, not undefined」が発生する
rails プロジェクトでrails-browserifyを使用して、reactJS アプリケーションをコンパイルしています。
ノードの package.json ファイルは次のようになります。
ただし、いつでもimport { observer } from 'mobx-react'
、私は
キャッチされていない TypeError: スーパー式は、未定義ではなく、null または関数のいずれかでなければなりません
これは、インポートした他のライブラリでは発生しません。react
、mobx
、react-dom
すべて正常にインポートされます。他に詳細が必要な場合はお知らせください。どんな助けでも大歓迎です。私は本当にここで困惑しています。
問題のモジュールはそのように見えます。コンポーネントでmobx-reactをまだ使用しておらず、インポートしただけです。エラーをトリガーするのは import { observer } 行です。
reactjs - コンポーネントを分割するときは dom コンテナ要素を避ける
私はreactを使用しており、コンポーネントをサブコンポーネントに分割して最適化したいと考えています(私はmobXを使用しており、リストの例として何かを達成しようとしていますhttps://mobxjs.github.io/mobx/best/react-performance. html )
しかし、そうすることで、余分な dom 要素を導入せざるを得なくなったようです。ツリーをレンダリングする NodeComponent を検討してください
これは疑似コードです。理解していただければ幸いです。
(以下の div のように) 子の周りに追加のラッパー dom 要素を導入せずに、最初の内部 div を再帰レンダリングから分離するにはどうすればよいですか?
何千ものノードがある場合、それは何千もの追加の役に立たない dom 要素を意味し、さらに、特定の dom 構造と CSS を使用して既存のコントロールを移植しており、それらを分割したい場合はそれを変更する必要があります。
TL;DR; このコンポーネントを 2 つに分割して、DOM 出力を変更せずに、不要なときにすべての子を再レンダリングしないという mobx の最適化を取得できますか?
または、もう一度: 純粋な最適化/リファクタリングによって、dom の最終結果を変更する必要があるのはなぜですか?
javascript - MobX 非同期反応
こんにちは、私はストアで MobX を使用しており、計算値が変更されたときに非同期反応が必要です。
実行中の状態とは別に、when
代わりに使用すると、ここで何が違うのだろうと思っていましたか?reaction
listview - React Native ListView を MobX で使用するには?
次のように、MobXの監視可能な配列を使用して、ネイティブに反応するListViewを作成しようとしています。
しかし、コードを実行すると、renderRow() が呼び出されることはありません。cloneWithRows() メソッドが行を複製する方法を知らなかったようです。
誰かがこれを行うことに成功しましたか? (また、犬のリスト内の犬の名前が変更されたときに、リスト内のセルが再レンダリングされるように動作させることもできます)