如何在没有 class 的情况下使用 mobx observer
How to use mobx observer without the class in react
我在我的 React Native 项目中使用 axios
和 mobx
。 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
。
我在我的 React Native 项目中使用 axios
和 mobx
。 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
。