如何在没有 class 的情况下使用 mobx observer

How to use mobx observer without the class in react

我在我的 React Native 项目中使用 axiosmobx。 mount 上的一个组件 (Home) 从另一个文件中调用一个方法 (getBirds()),其中组织了所有 API 方法。

store.js:

class BirdStore {
    @observable birdList = [];

    @action setBirdList = (birds) => {
        this.birdList = birds;
    };
}

Home.js:

@observer @inject("BirdStore")
export default class Home extends React.Component {    
    componentDidMount() {
        api.getBirds()
        ...
    }
}

api.js:

@inject('BirdStore') @observer
const api = {    
    getBirds() {
        const url = website + '/api/birds/';
        return axios.get(url)
            .then((response) => {
                this.props.BirdStore.setBirdList(response.data)
            })
            .catch((error) => {
                console.log(error);
            })
    },
};

但这给了我一个错误:

Leading decorator must be attached to a class declaration

我可以使用 getBirds() 返回的服务器数据到 Home 组件,然后调用 setBirdList() 动作,但我想保留 api相关的东西分开。是否可以在没有 class 的情况下使用 mobx 以便我可以处理除 class 组件本身之外的所有 api 相关内容?

这个错误非常神秘。他们说 "must be attached to..." 鉴于此,我会说,是的。您需要将装饰器附加到 class。但更重要的是,否则您将无法访问 this.props