では動作しません。mobxデコレータは、私はちょうど私がウェブアプリを反応させ、反応させ、ネイティブモバイルアプリ間の共有状態管理コアモジュール用mobxを使用する新しいプロジェクトを開発し始めた活字体
コアモジュールは、typescriptを使用します。これは、両方のアプリプロジェクトによってコンパイルされ、消費されます。
@observable
(コアモジュールの)ストア内のプロパティが変更されたとき、私の問題は両方のプロジェクトのコンポーネントで再現されません。
プロジェクトごとに同じ定義とロジックを使用してストアを作成すると、コンポーネントは期待どおりに再レンダリングされます。また、コアモジュールの一部をjavascript ES6をbabel-cliと一緒に変換しました。また、期待通りに動作します。
私はこの問題は、非typescriptですプロジェクトに活字体からコンパイル店舗をインポートして何かを持っていると信じて、私はそれを乗り越えることができません!
追加情報:
.ts
ストアファイル:
import { observable, action } from 'mobx'
export class UserStore {
@observable loading = false;
@action login() {
this.loading = true;
setTimeout(() => {this.loading = false},1000)
}
}
export const userStore = new UserStore();
.tsconfig
ファイル:
{"compilerOptions": {
"lib": ["es6", "dom", "es2015"],
"module": "commonjs",
"target": "es5",
"moduleResolution": "node",
"declaration": false,
"outDir": "lib",
"experimentalDecorators": true
},
"include": ["index.ts", "src" ]}
活字版:2.4.1
すべてのプロジェクトがmobx
最新のを使用し、 mobx-react
バージョン。
反応して反応するネイティブプロジェクトでは、通常のバベルを使用します。
(Iが設定Provider
を持っている。)ストアを消費するコンポーネント:
@inject('userStore')
@observer
class Loading extends Component {
componentWillMount() {
this.props.userStore.login();
}
render() {
return (
this.props.userStore.loading ? <div>loading...</div> : <div>loaded...</div>
) }}
あなたが新しい値を設定するときに、単純な値に観測可能な値を再書き込みしていないことを確認するために 'mobx.useStrict'を使用することを試みることができます。ここ –
同じ問題。あなたはそれを解決しましたか? https://github.com/mobxjs/mobx/issues/1071: –
は、この問題で私のために働いたソリューションを参照してください@BrickYang – naomi