如何将mobx存储注入无状态组件

Zha*_* Yi 14 javascript reactjs mobx mobx-react

我正在使用mobxreact在Web应用程序中,我想找到一种方法将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)}/>
    );
  }
};
Run Code Online (Sandbox Code Playgroud)

如何将其更改为无状态?我尝试下面的代码,但没有工作:

const Creator = ({form}) => {

  const connect = ()=>{
    console.log('xxxx,', form);
  }

  return (
    <Panel form={form} connect={connect}/>
  );
}

export default observer(Creator);
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时,我获得了该方法的undefined价值.如何将商店注入无状态组件?我尝试在无状态组件之上使用,但是语法错误.formconnect@inject

Tho*_*lle 30

inject 返回一个可以在观察者功能组件上使用的函数:

var Example = inject("myStore")(observer((props) => {
  // ...
}));
Run Code Online (Sandbox Code Playgroud)


Xer*_*ero 8

@Tholle 答案的一个变体:

const Example = inject("myStore")(observer(({myStore, otherProp}) => {
  // ...
}));
Run Code Online (Sandbox Code Playgroud)