Javascript 如何将状态传递给动作创建者
我想知道如何将状态传递到操作中,以便它可以使用状态进行API调用。我想传递的状态是输入,因为它是发送到Clarifai服务器以预测名人的图像URL。句柄搜索负责将状态更新到URL 我试着在没有运气的情况下使用get state 这是我的行动Javascript 如何将状态传递给动作创建者,javascript,reactjs,redux,Javascript,Reactjs,Redux,我想知道如何将状态传递到操作中,以便它可以使用状态进行API调用。我想传递的状态是输入,因为它是发送到Clarifai服务器以预测名人的图像URL。句柄搜索负责将状态更新到URL 我试着在没有运气的情况下使用get state 这是我的行动 export const requestPrediction = () => { return function (dispatch, getState) { dispatch(fetchCelebrequest) let inpu
export const requestPrediction = () => {
return function (dispatch, getState) {
dispatch(fetchCelebrequest)
let input = getState().input
app.models.predict(Clarifai.CELEBRITY_MODEL,
input)
.then(res => {
const data = res.outputs[0]['data']['regions'][0]['data'].concepts[0]
dispatch(fetchCelebSuccess(data))
})
.catch(err => {
const error = err.message
dispatch(fetchCelebFailed(error))
})
}
}
这是我的reducer.js
import {
CHANGE_SEARCHFIELD,
REQUEST_PREDICTION_PENDING,
REQUEST_PREDICTION_SUCESS,
REQUEST_PREDICTION_FAILED
} from './constants'
const initialState = {
input: '',
imageUrl: '',
box: {},
isSignedIn: false,
isPending: false,
celeb: {},
error: '',
celebConfidence: [],
user: {
id: '',
name: '',
email: '',
entries: 0,
joined: ''
}
}
export const handleSearch = (state=initialState, action={}) => {
switch (action.type) {
case CHANGE_SEARCHFIELD:
return { ...state, input: action.payload }
default:
return state
}
}
export const requestPrediction = (state=initialState, action={}) => {
switch(action.type) {
case REQUEST_PREDICTION_PENDING:
return {...state, isPending: true}
case REQUEST_PREDICTION_SUCESS:
return {...state, celebName: action.payload, isPending: false}
case REQUEST_PREDICTION_FAILED:
return {...state, error: action.payload, isPending: false}
default:
return state
}
}
正确的方法是通过setState,因为我的更新是异步的。
您可以查看此链接 但是,状态不是来自组件,是不是应该来自组件?在您的示例中,您希望从何处获取状态以将其传递给分派?在大多数情况下,它来自组件:例如,用户单击按钮。是的,因此,当用户单击按钮时,它会更新redux存储中的输入状态,我不确定如何从我的操作访问该状态。通常的流程是当用户单击时,使用setState更新状态,然后将其发送到存储(例如,来自handleClick函数)。分派此值后,您可以从MapStateTops访问它。您可以使
requestPrediction
成为input
的函数,而不是使用getState
来选择输入值。将输入的状态保持在组件的本地,组件将调用分派(requestPrediction(input))
。