Webアプリケーションでmobx
とreact
を使用していて、mobx
ストア状態をステートレスコンポーネントに渡す方法を見つけたいです。以下は私の現在のコンポーネントのソースコードです:
import React from 'react';
import Panel from './Panel';
import {inject, observer} from 'mobx-react';
@inject(allStores => ({
form: allStores.store.form,
}))
@observer
export default class Creator extends React.Component {
connect() {
console.log(this.props.form);
};
render() {
return (
<Panel form={this.props.form} connect={this.connect.bind(this)}/>
);
}
};
どうすればステートレスに変更できますか?以下のコードを試してみましたが、うまくいきませんでした:
const Creator = ({form}) => {
const connect = ()=>{
console.log('xxxx,', form);
}
return (
<Panel form={form} connect={connect}/>
);
}
export default observer(Creator);
上記のコードを実行すると、undefined
メソッドでform
のconnect
値が得られました。ストアをステートレスコンポーネントに挿入するにはどうすればよいですか?ステートレスコンポーネントの上に@inject
を使用しようとしましたが、構文エラーが発生しました。
inject
は、オブザーバー機能コンポーネントで使用できる関数を返します。
var Example = inject("myStore")(observer((props) => {
// ...
}));
@Tholle回答のバリアント:
const Example = inject("myStore")(observer(({myStore, otherProp}) => {
// ...
}));