отправка не определена / магазин не определен в действиях - PullRequest
0 голосов
/ 29 ноября 2018

В моих действиях в моих приложениях реагировать на избыточность, когда я пытаюсь отправить действие, я получаю, что отправка не определена. Сообщение об ошибке no-undef.Когда я изменяю рассылку на store.dispatch, я получаю то же самое сообщение для store.мой магазин настроен так:

const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION__COMPOSE|| compose;
const store = createStore(
  rootReducer,composeEnhancers(applyMiddleware(thunk))
)

ReactDOM.render(
  <Provider store={store}>
    <Router>
      <Route  component={App}/>
    </Router>
  </Provider>,
  document.getElementById('root')
);
register();

У меня настроено действие так:

export function login(email,password){
  const url = 'http://localhost:3000/login';
  let data= JSON.stringify({
    email: email,
    password: password
  });
  const headers = {
    'Content-Type':'application/json',
    'Accept': 'application/json'
  };


  return function(dispatch){
    return fetch(url,{
      method: 'POST',
      headers:headers,
      body: data
    })
    .then(res => {
      if (res.status === 401) {
            alert("login failed");
          } else {
            return res.json();
          }
    })
  }
  .then(json=>{
    localStorage.setItem('token',json.token)
    dispatch({type:SET_USER, user:json.user})
  })
}

и мои редукторы настроены:

import {combineReducers} from 'redux'

 function userReducer(state=null,action){
  switch(action.type){
    case 'SET_USER':
      return action.user
    default:
      return state
  }
}
const rootReducer = combineReducers({
  user:userReducer
})
export default rootReducer

Я просматривал документы и не нашел ответа, и эта установка очень похожа на последнее приложение, которое я создал.

1 Ответ

0 голосов
/ 29 ноября 2018

Попробуйте это

export function login(email,password){
  const url = 'http://localhost:3000/login';
  let data= JSON.stringify({
    email: email,
    password: password
  });
  const headers = {
    'Content-Type':'application/json',
    'Accept': 'application/json'
  };


  return function(dispatch){
    return fetch(url,{
      method: 'POST',
      headers:headers,
      body: data
    })
    .then(res => {
      if (res.status === 401) {
            alert("login failed");
          } else {
            return res.json();
          }
    })
    .then(json=>{
      localStorage.setItem('token',json.token)
      dispatch({type:SET_USER, user:json.user})
    })
  }

}
...