0
サンク。それは素晴らしい作品です。パス引数が約束リデューサーする/ Iが反応し、ミドルウェアなどの約束/サンクでReduxの使用しています
私が把握することはできませんSNE事があります。以下の作品:
私は私のコンポーネントからアクションをディスパッチ:
this.props.dispatch(addTag({ name: name, photoId: this.props.photoId}))
私の行動は、サンクに包まれたAJAXを実行し、約束を返します。
export function addTag(payload) {
var url = "/api/photos/".concat(payload.photoId, "/addtag?name=" ,payload.name)
return function(dispatch) {
var request = new Request(url, {headers: headers});
fetch(request)
.then((response) => {
dispatch({type: "ADD_TAG", payload: response.json()})
})
.catch((err) => {
dispatch({type: "ADD_TAG", payload: err})
})
}
}
をし、減速がそれを拾っ:
case 'ADD_TAG_FULFILLED': {
newState = state
.set('tags', action.payload.tags)
.set('inputValue', '')
return newState
}
ここで、アクションに渡されるペイロードを減速機? (私を状態に戻し、コンポーネントに戻すために... 私は、サンクと約束のミドルウェアの機能を "破壊"するような方法でこれを行うことができます。これは最善の解決策ですか?
export function addTag(payload) {
var url = "/api/photos/".concat(payload.photoId, "/addtag?name=" ,payload.name)
return function(dispatch) {
var request = new Request(url, {headers: headers});
fetch(request)
.then((response) => {
return (response.json())
})
.then((json) => {
dispatch({type: "ADD_TAG", payload: {suggestions: json, pl: payload})
})
.catch((err) => {
dispatch({type: "ADD_TAG", payload: err})
})
}
}
は、なぜあなたはミドルウェアの機能を壊していると言うん – Lucas
問題のコンポーネントが新しいReduxの状態を受けるべきである(コンポーネントの状態と混同しないように)小道具として、あなたは図書館のrを使っていますか? eact-redux 'とconnect()関数を使ってこれを行いますか? – ferndopolis
あなたがディスパッチするアクセス権を持っている限り、アクションを実行し、ペイロードをレデューサーに渡すことができます - この例では、フェッチが成功した場合にのみペイロードを渡します。 (あなたが望むのにそれらをチェーンすることができます) – Mateusz