में Async क्रियाएं मेरे पास एक प्रतिक्रिया ऐप है, मुझे Redux के साथ एक ऑनलाइन सेवा (async) में AJAX कॉल (सीखने के लिए) बनाने की आवश्यकता है।Redux
यह मेरी दुकान है:
import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import duedates from './reducers/duedates'
export default applyMiddleware(thunk)(createStore)(duedates);
यह कार्रवाई है:
import rest from '../Utils/rest';
export function getDueDatesOptimistic(dueDates){
console.log("FINISH FETCH");
console.log(dueDates);
return {
type: 'getDueDate',
dueDates
}
}
export function waiting() {
console.log("IN WAIT");
return {
type: 'waiting'
}
}
function fetchDueDates() {
console.log("IN FETCH");
return rest({method: 'GET', path: '/api/dueDates'});
}
export function getDueDates(dispatch) {
console.log("IN ACTION");
return fetchDueDates().done(
dueDates => dispatch(getDueDatesOptimistic(dueDates.entity._embedded.dueDates))
)
}
और यह कम करने है:
export default (state = {}, action) => {
switch(action.type) {
case 'getDueDate':
console.log("IN REDUCER")
return state.dueDates = action.dueDates;
default:
return state
}
}
मैं मैं गलत क्या कर रहा प्राप्त न । कार्रवाई पूरी तरह से घटक से कहा जा रहा है। लेकिन फिर मुझे यह त्रुटि मिलती है:
Error: Actions must be plain objects. Use custom middleware for async actions.
मुझे लगता है कि मैं प्रतिक्रिया-थंक मिडलवेयर गलत का उपयोग कर रहा हूं। मैं क्या गलत कर रहा हूँ?
संपादित
अब कार्रवाई कम करने के लिए बुला रहा है, लेकिन कम करने, राज्य बदलने के बाद, फिर से चल प्रस्तुत करना विधि
case 'getDueDate':
console.log("IN REDUCER")
return state.dueDates = action.dueDates;
महान काम करता है, अब काम कर रहा है। लेकिन reducer में, जब मैं 'वापसी' राज्य 'वापसी' dueDates = action.dueDates; ', यह फिर से प्रस्तुत नहीं कर रहा है .. क्या मुझे कुछ और जोड़ना चाहिए? – Pablo
अभी, आपके कोड नमूने में, दोनों क्रियाएं राज्य को नहीं बदलती हैं। आप खुद ही राज्य लौटते हैं। क्या आप अपने प्रश्नों को अपडेट कर सकते हैं ताकि मैं (या कोई और) वर्तमान स्थिति देख सकूं? –
अपडेट किया गया, अब मैं वापस लौटा हूं। DueDates = action.dueDates; ' – Pablo