javascript - 从 Reactjs 上未定义的 api 接收的 JSON 对象
问题描述
我一直在做我的仪表板项目。这是我的应用程序从我的 API 接收到一个未定义的对象。我一直在测试我的邮递员,它工作正常。这是我的代码。
这是我的 action.js
import debounce from 'debounce-promise';
import {
START_FETCHING_SOCIAL_MEDIA,
ERROR_FETCHING_SOCIAL_MEDIA,
SUCCESS_FETCHING_SOCIAL_MEDIA,
SET_PAGE,
SET_KEYWORD,
NEXT_PAGE,
PREV_PAGE,
} from './SocialMediaConstants';
import { getSocialMedia } from './api/socialMedia';
let dbouncedFetchSocialMedia = debounce(getSocialMedia, 1000)
export const fetchSocialMedia = () => {
return async (dispatch, getState) => {
dispatch(startFetchingSocialMedia())
let perPage = getState().socialMedia.perPage || 9;
let currentPage = getState().socialMedia.currentPage || 1;
let keyword = getState().socialMedia.keyword || '';
const params = {
limit: perPage,
skip: (currentPage * perPage) - perPage,
q: keyword
}
console.log('fetching...')
try {
console.log('success fetch')
let { data: {data, count}} = await dbouncedFetchSocialMedia(params);
dispatch(successFetchingSocialMedia({data, count}))
console.log(dispatch(successFetchingSocialMedia({data, count})))
} catch (err) {
console.log('failed fetch')
dispatch(errorFetchingSocialMedia(err))
}
}
}
export const startFetchingSocialMedia = () => {
return {
type: START_FETCHING_SOCIAL_MEDIA,
}
}
export const successFetchingSocialMedia = (payload) => {
// console.log(payload)
return {
type: SUCCESS_FETCHING_SOCIAL_MEDIA,
...payload
}
}
export const errorFetchingSocialMedia = () => {
return {
type: ERROR_FETCHING_SOCIAL_MEDIA
}
}
这是我的 reducer.js
import {
START_FETCHING_SOCIAL_MEDIA,
ERROR_FETCHING_SOCIAL_MEDIA,
SUCCESS_FETCHING_SOCIAL_MEDIA,
SET_PAGE,
SET_KEYWORD,
NEXT_PAGE,
PREV_PAGE
} from './SocialMediaConstants'
const statuslist = {
idle: 'idle',
proccess: 'proccess',
success: 'success',
error: 'error'
}
const initialState = {
data: [],
currentPage: 1,
totalItems: -1,
perPage: 6,
keyword: '',
status: statuslist.idle
};
export default function SocialMediaReducer(state = initialState, action){
switch(action.type){
case START_FETCHING_SOCIAL_MEDIA:
return {...state, status: statuslist.proccess, data: []}
case SUCCESS_FETCHING_SOCIAL_MEDIA:
// console.log(...state)
return {...state, data: action.data, totalItems: action.count, status: statuslist.success }
case ERROR_FETCHING_SOCIAL_MEDIA:
return {...state, status: statuslist.error}
case SET_PAGE:
return {...state, currentPage: action.currentPage}
case SET_KEYWORD:
return {...state, keyword: action.keyword}
case NEXT_PAGE:
return {...state, currentPage: state.currentPage + 1}
case PREV_PAGE:
return {...state, currentPage: state.currentPage - 1}
default:
return state;
}
}
这是我的 api/socialMedia.js
import axios from 'axios'
import { config } from '../../../../config'
export async function getSocialMedia(params){
console.log('hit the api')
return await axios.get(`${config.api_host}/api/social-media`, {
params
})
}
这个页面
import * as React from "react";
import {useSubheader} from "../../../_metronic/layout";
import { useDispatch, useSelector } from 'react-redux';
import { fetchSocialMedia } from "./SocialMediaActions";
export default function SocialMediaPage(){
let dispatch = useDispatch();
let socMeds = useSelector(state => state.socialMedia);
const suhbeader = useSubheader();
suhbeader.setTitle("Social Media");
React.useEffect(() => {
dispatch(fetchSocialMedia())
}, [dispatch])
return (
<div>
halo
{socMeds && socMeds.data && socMeds.data.map((socialMedia, index) => {
console.log('nungguin ya')
return <div>
{index} - {socialMedia.platform}
</div>
})}
</div>
);
};
这是来自控制台
解决方案
推荐阅读
- docker - 使用 ansible 卷的组合列表启动 Docker 容器
- python - WTForms Validators 在编辑用户时检查字段的唯一性
- java - 处理来自 java 流的相邻重叠对
- java - 断开连接后使用SFTP下载InputStream时JSch“管道关闭”
- amazon-web-services - 直接在云形成中设置堆栈级标签,无需包装器模板
- encoding - 编辑后的视频会产生比原始图像更小的图像,即使分辨率更高
- python - 错误:Pandas 需要版本 '1.1.0' 或更新版本的 'xlrd'(当前安装版本 '1.0.0')
- arduino - 在 esp32 上为盖革计数器获取数据时出现问题
- html - 跨度为双 f,chrome 中的奇怪性能
- android - Android recycler view onItemClick 识别适配器