reactjs - Redux saga 不获取到 api
问题描述
我正在尝试从服务器获取当前用户,但它似乎无法正常工作。我正在使用 redux saga 来提出请求。这是我的传奇,负责请求一些数据`
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 来代理对localhost:5000的API调用。这是我的 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 对象。任何帮助,将不胜感激
解决方案
您成功获得了必须解析为json
格式的数据,请执行此操作。
let data = yield call([response, response.json]);
console.log(data);
或者您甚至可以通过这种方式获取数据。
let data = yield response.json();
console.log(data)
推荐阅读
- python - 如何使用 argparse 获取图像输入并将其传递给函数?
- php - 访问和刷新令牌 (JWT) php
- python - 如何轻松将 Pandas 条形图转换为水平图?
- libgit2sharp - 如何验证凭据提供程序
- circleci - Circleci:如何在循环 ci 中连续运行作业,而不仅仅依赖于成功
- android - setStat() 不更新屏幕
- c++ - 错误 C2039:“binary_function”:不是“std”的成员
- python - Django RF,无法将用户实例传递给 serializer.save() 方法
- javascript - 安装组件时反应功能中的Javascript
- azure-data-factory - Azure Data Facory - 连接到谷歌的 Firebase 数据库