В последнее время я работаю в избыточности и пытаюсь получить в свои руки, я пытался асинхронный вызов с помощью redux-thunk.
Я показываю соответствующие файлы.
Posts.js
Этот файл вызывает getPosts () в componentdidmount, который в свою очередь пытается получить данные от actionCreator.
import React,{Component} from 'react'
import Axios from 'axios'
import CardPost from '../Post/Post'
import Container from 'react-bootstrap/Container'
import Row from 'react-bootstrap/Row'
import Col from 'react-bootstrap/Col'
import classes from './Posts.module.css'
import {Link,Route} from 'react-router-dom'
import {connect} from 'react-redux'
import {getPost} from '../../Store/action/posts'
class Posts extends Component{
componentDidMount(){
this.props.getPosts()
}
render(){
let post =<p>Loading data...</p>
if(this.props.bulkPost.length>0){
console.log("rendering again")
post = this.props.bulkPost.map((item)=>{
return(
<Col as={Link} to={"/posts/"+item.id} className={classes.topMargin} key={item.id} sm={4}>
<CardPost/>
</Col>
)
})
}
return(
<>
<div>
<Container>
<Row>
{post}
</Row>
</Container>
</div>
</>
)
}
}
const mapStateToProps = state=>{
return{
bulkPost: state.pos.posts,
// oneLineData: state.full.fetchedText
}
}
const mapDispatchToProps = dispatch =>{
return{
// onDeleteResult: (id)=>dispatch(actionCreator.deleteResult(id)),
getPosts:()=>dispatch(getPost())
}
}
export default connect(mapStateToProps, mapDispatchToProps)(Posts)
Это мой actionCreator posts.js
Он используетсворачивает промежуточное программное обеспечение thunk и пытается получить данные Async, при проверке по console.log (res) данные извлекаются в файл.
import {POSTS} from '../action/actionType'
import Axios from 'axios'
export const savePost = (res)=>{
return{
posts: res,
type:POSTS
}
}
export const getPost = ()=>{
return (dispatch)=>{
Axios.get("https://jsonplaceholder.typicode.com/posts/").then((response)=>{
dispatch(savePost(response.data));
})
}
}
А теперь третий файл, в котором данные должны быть идеально отправлены и возвращены нам
import * as actionType from '../action/actionType'
const intitalState = {
posts:[]
}
const reducer = (state=intitalState, action)=>{
switch(action.type){
case actionType.POSTS:
console.log(state)
const post = state.posts.slice(0,4);
const updatedPost = post.map((post)=>{
return{
...post
}
})
return{
...state,
posts:updatedPost
}
}
return state
}
export default reducer
Здесь сообщения о состоянии не заполняются методом отправки вПервый файлМожет кто-нибудь помочь, пожалуйста, что я делаю здесь не так?
Редактировать: это полный рабочий проект онлайн
https://codesandbox.io/s/4xwlwl70v0