我在我的反應原生項目中使用axios
和mobx
。其中一個安裝組件(Home
)需要從其他所有API方法組織的文件中調用方法(getBirds()
)。如何使用mobx observer而無需使用類中的反應
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相關的東西。無論如何,如果沒有這個類,我可以使用mobx
,這樣我就可以處理除類組件本身之外的所有api相關的東西了嗎?
'@inject('BirdStore')@ observer'只能在React組件上使用,而不能在像'api'這樣的常規對象上使用。還可以嘗試更改'Home「上的裝飾器的順序。 '@inject(「BirdStore」)@ observer' – Tholle
@Tholle好的。感謝您的領導! –