Redux Saga не подходит для API - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь получить текущего пользователя с сервера, но, похоже, он не работает должным образом.Я использую Sagate Redux для того, чтобы делать запросы.Вот моя сага, которая отвечает за запрос некоторых данных `

    import {
  take, put, call, apply
} from 'redux-saga/effects';

import { getUserInfo, GET_USER_INFO } from '../actions';

export default function* currentUserSaga() {
  let data;
  try {
    yield take(GET_USER_INFO);
    const response = yield call(fetch, '/api/current_user');
    data = yield apply(response, response.json);
    console.log(response, 'responseee from user saga');
    yield put(getUserInfo(data));
  } catch (err) {
    console.log(err);
  }
}

Так что теперь я использую webpack dev-server для прокси API вызовов localhost: 5000 .это моя конфигурация webpack `

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const ExtractCssChunks = require('extract-css-chunks-webpack-plugin');

module.exports = (env) => {
  const isProduction = env === 'production';

  return {
    entry: ['@babel/polyfill', './src/client/index.js'],
    output: {
      path: path.join(__dirname, 'dist'),
      filename: 'bundle.js'
    },
    module: {
      rules: [
        {
          test: /\.js$/,
          exclude: /node_modules/,
          use: {
            loader: 'babel-loader'
          }
        },
        {
          test: /\.s?css$/,
          use: [{
            loader: ExtractCssChunks.loader
          }, {
            loader: 'css-loader',
            options: { sourceMap: true, importLoaders: 1 }
          }, {
            loader: 'postcss-loader',
            options: { sourceMap: true }
          }, {
            loader: 'sass-loader',
            options: { sourceMap: true }
          }]
        },
        {
          test: /\.(png|woff|woff2|eot|ttf|svg)$/,
          use: [
            {
              loader: 'url-loader',
              options: {
                limit: 24576
              }
            }
          ]
        }
      ]
    },
    plugins: [
      new CleanWebpackPlugin(['dist']),
      new HtmlWebpackPlugin({
        filename: 'index.html',
        template: './public/index.html',
        favicon: 'public/images/react.png'
      }),
      new ExtractCssChunks({
        path: path.join(__dirname, 'dist'),
        filename: 'style.css'
      })
    ],
    devServer: {
      contentBase: path.join(__dirname, 'dist'),
      historyApiFallback: true,
      port: 3000,
      proxy: {
        '/auth/eventbrite': 'http://localhost:5000',
        '/api/*': {
          target: 'http://localhost:5000'
        }
      }
    },
    devtool: isProduction ? 'source-map' : 'inline-source-map'
  };
};

Я думаю, что проблема в генераторах, потому что когда я открываю браузер и ввожу http://localhost:3000/api/current_user, он дает мне JSON-объект пользовательских данных.Любая помощь будет оценена

1 Ответ

0 голосов
/ 25 сентября 2018

Вы успешно получили данные, вам нужно проанализировать их в формате json, выполните следующие действия.

let data = yield call([response, response.json]);
console.log(data); 

Или вы можете даже получить данные таким образом.

let data =  yield response.json();
console.log(data)
...