佐贺函数未被调用

时间:2020-08-31 22:37:58

标签: javascript reactjs redux react-redux redux-saga

我在我的项目中将saga.js与Redux一起使用,并且尝试调用API,但未调用该API。生成器函数已调用,但使用import numpy as np npts = 5000 dof = 3 X_r = np.arange(npts) product = X_r * X_r.transpose() Rowsum = [np.sum(product[i]) for i in range(npts)] C_N = np.sum(Rowsum)/(npts - 1) # compute det and C_N const = np.sqrt(np.linalg.det(((dof-2)/dof)*C_N)) print(const) 时未调用其他方法。我对Redux Saga相当陌生,并且被困在这里。任何帮助将不胜感激。

Saga.js

yield.put()

getAsyncDataWatcher()正在被调用,但没有调用 import { put, takeEvery, all ,fork, takeLatest} from "redux-saga/effects"; import axios from "axios"; function* runOurAction() { let remoteData; yield axios.get(url).then((resp) => { remoteData = resp.data; }); yield put({ type: "SET_DATA", payload: remoteData }); }; function* getAsyncDataWatcher() { yield takeLatest("GET_TEAMS", runOurAction); } export default function* rootSaga() { yield fork(getAsyncDataWatcher) }

Reducer.js

runOurAction

Actions.js

    const teams=(state=[],action)=>{
    
       switch(action.type) {
         case "SAVE_TEAMS":
            return { ...state, payload: action.payload };
    
         case "GET_TEAMS": 
            return { ...state, payload: action.payload };
    
          case "SET_DATA":
            return { ...state, payload: action.payload };
      
          default: 
            return state;
        }
    }
    
    export default teams;

index.js

      const getTeams = (payload) => {
        return {
          type: "GET_TEAMS",
          payload:payload
        };
      };
    
      const saveTeams = (payload) => {
        return {
          type: "SAVE_TEAMS",
          payload:payload
        };
      };
      
      export  { saveTeams, getTeams };

Team.js

    import React from 'react';
    import ReactDOM from 'react-dom';
    import './index.css';
    import App from './App';
    import * as serviceWorker from './serviceWorker';
    import rootReducer from "./reducers";
    import createSagaMiddleware from "redux-saga";
    import { createStore, applyMiddleware ,compose} from "redux";
    import { Provider } from "react-redux";
    import rootSaga from "./saga";
    const sagaMiddleware = createSagaMiddleware();
    const enhancers = [window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__(), applyMiddleware(sagaMiddleware)];
    
    const store = createStore(
      rootReducer,
      compose(...enhancers)  
    );

    sagaMiddleware.run(rootSaga);
    
    ReactDOM.render(
      <Provider store={store}>
        <App />
      </Provider>,
      document.getElementById('root')
    );
    
    // If you want your app to work offline and load faster, you can change
    // unregister() to register() below. Note this comes with some pitfalls.
    // 
    serviceWorker.unregister();

2 个答案:

答案 0 :(得分:1)

该问题可能是由axios.get()引起的,因为返回是希望的。请尝试以下操作:

yield axios.get(url).then((resp) => {
        return resp.data;
      }).then(response => {
         remoteData = response;
      });

答案 1 :(得分:0)

我认为您不能直接通过这种方式直接调用axios函数。您必须将其包装在callsaga-effects中,后者仅以函数作为参数而不是Promise解析,因此它看起来像:

import { call } from 'redux-saga/effects';

// Wrap in a call which takes a function as argument
const remoteData = yield call(() => axios.get(url).then(response => repsonse.data));

// Or you can simply write in shorter way
const { data: remoteData } = yield call(axios.get, url);