我有以下动作创建者:
export function selectBook(ISBN, dispatch) {
const url = `${ROOT_ITEMS_URL}/${ISBN}?all=true`;
dispatch({ type: 'SELECT_BOOK_LOADING', isLoading:true });
axios.get(url)
.then(({ data }) => dispatch({ type: 'SELECT_BOOK_SUCCESS', data}))
.catch(( err ) => dispatch({ type: 'SELECT_BOOK_FAILURE', isLoading:false}))
}
我的项目主索引文件中也有以下内容:
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { createStore, applyMiddleware } from 'redux';
import LoginLayout from './layouts/LoginLayout';
import reducers from './reducers';
import ReduxPromise from 'redux-promise';
import reduxThunk from 'redux-thunk';
const createStoreWithMiddleware = applyMiddleware(ReduxPromise, reduxThunk)(createStore);
//const createStoreWithMiddleware = applyMiddleware()(createStore);
ReactDOM.render(
<Provider store={createStoreWithMiddleware(reducers)}>
<LoginLayout />
</Provider>
, document.querySelector('.root'));
我很困惑如何调用调用到我的项目中。我收到以下错误:
bundle.js:5690 Uncaught TypeError:dispatch不是函数
当我调用此函数时,我没有通过任何调度。但我不知道如何调用它。这是我需要用函数调用进行的redux调用吗?
this.props.selectBook(params.bookID);
应该是这样吗?:
this.props.selectBook(params.bookID, dispatch);
和什么导入派遣?来自&#39; redux&#39;?
的导入调度答案 0 :(得分:1)
尝试像这样做你的动作创作者:
<br.com.sapereaude.maskedEditText.MaskedEditText
android:id="@+id/phone_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="phone"
android:typeface="monospace"
mask:allowed_chars="1234567890"
mask:mask="##:###"
android:hint="12:34"
app:keep_hint="true"
/>
它需要返回功能
答案 1 :(得分:1)
dispatch
通过redux-thunk
免费提供给您。这里的诀窍是你的动作创建者应该返回一个函数,函数的第一个参数将是dispatch
。您的动作创建者最终会看起来像这样:
export function selectBook(ISBN) {
return dispatch => {
const url = `${ROOT_ITEMS_URL}/${ISBN}?all=true`;
dispatch({ type: 'SELECT_BOOK_LOADING', isLoading:true });
axios.get(url)
.then(({ data }) => dispatch({ type: 'SELECT_BOOK_SUCCESS', data}))
.catch(( err ) => dispatch({ type: 'SELECT_BOOK_FAILURE', isLoading:false}))
}
}