传奇不断

时间:2019-07-01 10:57:36

标签: javascript reactjs api

const SYSTEM_DATA = {
    GENDER: [
        { value: 'male', label: 'Male' },
        { value: 'female', label: 'Female' },
    ],
    DAYS: [
        { value: 1, label: 'Monday' },
        { value: 2, label: 'Tuesday' },
        { value: 3, label: 'Wednesday' },
        { value: 4, label: 'Thursday' },
        { value: 5, label: 'Friday' },
        { value: 6, label: 'Saturday' },
        { value: 0, label: 'Sunday' },
    ],
    CITY: [

    ]
}

export default SYSTEM_DATA

我有这种数据文件来保持常数,但是每次打开相关页面时,我都需要从服务器获取城市。如何在此处直接使用我的redux saga请求填充CITY数组。

2 个答案:

答案 0 :(得分:0)

您能否仅在状态中获得此数据,并且在您的传奇中解决了城市API请求后,只需执行一项操作即可启动标准的Redux周期。

async function a () {
   await subscription_return();
   code to be executed after subscription has got the data
}

subscription_return(){
     this.http.getDataFromService().subscribe((response) => {});
}

呼叫城市传奇,呼叫api,用更新的城市开火,然后仅通过标准的redux action reducer流程进行状态更改

答案 1 :(得分:0)

为什么不只是将从服务器获取的数据保存到商店中。如果您已经有商店作为选项,为什么要在const中添加一些内容。

在更高级别的组件或组件层次结构中调用store.dispatch(getCities())。

所以, 在您的高级组件中,只需调度操作,然后将所有城市都放在商店的“ cities []”中即可。

export function getAllCities(){
return fetch(YourUrl)
    .then(response=>response.json());}

和传奇

export function* fetchCities(){

const cities=yield getAllCities();
yield put(putCitiesToStore(cities));}

另一方面,您可以从此“ getAllCities()”中获取城市并将其添加到const。