Reactjs React Redux Saga样板流程
我已经使用其中一个启动了我的react.js项目。我用过一个。我正在努力学习反应的实际流程 Redux样板。在研究了它们的结构之后,我能够调用API并获得组件上的数据。以下是我根据结构学到的流程:- a。在componentDidMount上,我调用了Mudules方法来创建一个动作Reactjs React Redux Saga样板流程,reactjs,redux,redux-saga,Reactjs,Redux,Redux Saga,我已经使用其中一个启动了我的react.js项目。我用过一个。我正在努力学习反应的实际流程 Redux样板。在研究了它们的结构之后,我能够调用API并获得组件上的数据。以下是我根据结构学到的流程:- a。在componentDidMount上,我调用了Mudules方法来创建一个动作 // On view componentDidMount() { this.props.getCampaignTopics(1); } //On Modules export const ge
// On view
componentDidMount() {
this.props.getCampaignTopics(1);
}
//On Modules
export const getCampaignTopics = createAction(GET_CAMPAIGN_TOPICS, (id : string) => ({id}));
b。在saga上,当动作被触发时,我调用API端点来获取数据
// On Saga
export function* getCampaignTopics(actions) {
let id=0;
if(actions.payload.id)
{
id= actions.payload.id;
}
const responsetype = yield call(() => fetch(__CONFIG__.api_url+'topic/' + id,{method:'GET',data:{}}).then(response => response.json()))
yield put(addcampaignActions.setCampaignTopics(responsetype.data));
}
function* watchGetHome() {
yield takeLatest(addcampaignConstants.GET_CAMPAIGN_TOPICS, getCampaignTopics);
}
c。获取数据后,我调用另一个模块方法来设置数据
export const setCampaignTopics = createAction(SET_CAMPAIGN_TOPICS, (topics : any) => ({topics}));
export const reducers = {
[GET_CAMPAIGN_TOPICS]: (state, { payload }) =>
state.merge({
...payload,
}),
[SET_CAMPAIGN_TOPICS]: (state, { payload }) =>
state.merge({
...payload,
}),
}
d。鉴于此,我使用选择器来分隔索引
// Selector
const addcampaignDataSelector = state => state.addcampaign;
const topicSelector = createSelector(
addcampaignDataSelector,
payload => payload.get('topics')
);
export const addcampaignSelector = state => ({
topics: topicSelector(state)
});
e。在组件中,我得到了道具的价值
// render on Component
const { addcampaign } = this.props;
topics = addcampaign.topics.toJS().children;
这就是我从他们的教程中得到的流程,我正在得到数据。但我想确定我是否在正确的轨道上?请告诉我这是否是正确的过程
接下来,我想从组件调用一个方法,并希望接收组件上的响应,以便获得局部变量上的数据。谁能给我一些教程或例子,这样我就可以轻松地学习了
如果您正在寻找一个可用于生产的样板文件,
是最受欢迎的一种
你似乎在正确的轨道上。react样板中的这个图表可能有助于更好地理解流程 在我看来,流似乎很好-只有一个建议我会避免在组件中使用
addcampaign.topics.toJS().children
-在我看来,如果组件接收更多的基本类型而不是immutable.js对象(我假设您使用的是该库),则会更清楚一些。所以也许你也可以把它作为选择器公开。另外,在getCampaignTopics
中,您可以将0
作为默认值或id
参数,这样您就不必在saga中对其进行测试。因此,根据我的流程,我没有使用任何回调来获取返回值,我只需要在变量上获取所有信息,并且我必须检查该变量是否已更新。有什么办法可以打回电话吗?因为假设我有一个方法getCampaignTopics(),使用该方法,我需要在同一个组件上使用父主题和子主题,那么我该怎么做呢?谢谢@Anu的回答。你能告诉我调用saga方法并得到回调的过程吗。我希望返回数据在回调方法上,而不是在变量上。