React入门之Redux(二):react-redux基本使用

另:记得在index.js中引入rootReducer

react-redux的引入

在index.js中引入react-redux

import { Provider } from ‘react-redux’

使用Provider包裹我们的主组件App,连接React和Redux

Provider的更多理解可以查看这篇文章:here这篇

ReactDOM.render(

<React.StrictMode>

</React.StrictMode>,

document.getElementById(‘root’)

);

mapStateToProps

Home页的改造

引入react-redux的connect方法,让store与reatc真正连接

import { connect } from ‘react-redux’

将state映射成props,传入connect,返回一个高阶组件,增强Home组件,使它能够与redux交互

// 将state映射成props

const mapStateToProps = (state) => {

return {

posts:state.posts

}

}

// connect接收mapStateToProps,返回一个高阶组件,让Home组件能够与redux交互,拿到state数据

export default connect(mapStateToProps)(Home)

将Home组件render函数中的this.state.props改为this.props

// 解构获得posts

// const { posts } = this.state;

// 使用redux传递过来的props

const {posts} = this.props

效果:Home页面可以展示store中的三条记录

在这里插入图片描述

博文详情页Post的改造

原本单篇博客的详情页是通过axios再次请求的,改为向redux请求数据

注释掉state和钩子函数请求数据的代码,引入react-redux

import { connect } from ‘react-redux’

根据post_id在state中寻找这篇博文的详情数据并传递给Post

const mapStateToProps = (state, ownProps)=>{

let id = ownProps.match.params.post_id;

return {

post:state.posts.find(post =>String(post.id) === id)

}

}

export default connect(mapStateToProps)(Post)

把render函数中的this.state.props改为this.props

// 解构

// const {post} = this.state;

const {post} = this.props;

效果:

在这里插入图片描述

mapDispatchToProps vs dispatch派发action

设置mapDispatchToProps,派发action

// 派发action 根据id删除post

const mapDispatchToProps = (dispatch) => {

return {

deletePost: (id) => dispatch({ type: ‘DELETE_POST’, id: id })

}

}

export default connect(mapStateToProps, mapDispatchToProps)(Post)

添加一个删除按钮,并设置点击事件,当点击按钮,就触发dispatch分发,删除该条博文

在博文的p标签后面加这个按钮

删除博客

定义点击事件

//删除博客按钮

handleClick = ()=>{

this.props.deletePost(this.props.post.id);

}

设置reducer,当action类型为DELETE_POST时,从state中删除这条博文的记录

// 设置rootReducer

const rootReducer = (state = initState, action)=>{

if (action.type === ‘DELETE_POST’){

let newPosts = state.posts.filter(post=>{

return post.id !== action.id

})

return {

…state,

posts:newPosts

}

}

return state;

}

设置重定向,当删除某条博文后,跳转到home页面

在删除按钮的点击事件中设置

//删除博客按钮

handleClick = ()=>{

this.props.deletePost(this.props.post.id);

// 删除之后跳转到home页面

this.props.history.push(‘/’)

}

效果:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

action生成器

为了提高代码的复用性、简洁性、组件化,将post相关的action设置抽离出一个文件

在src下新建一个文件夹actions,里面新建一个文件postActions.js

export const deletePost = (id)=>{

type:“DELETE_POST”,

id

}

在Post.js文件中引入并使用

引入:

import { deletePost } from ‘…/action/postActions’

使用:

const mapDispatchToProps = (dispatch) => {

return {

// deletePost: (id) => dispatch({ type: ‘DELETE_POST’, id: id })

deletePost: (id) => dispatch(deletePost(id))

}

}

Post.js完整代码:

// import axios from “axios”;

import React, { Component } from “react”;

import { connect } from ‘react-redux’

import { deletePost } from ‘…/action/postActions’

class Post extends Component {

// // 初始化state,存储路由参数post_id,确定id可以获得之后,直接存储具体博文post

// state = {

// // id:null,

// post:null

// }

// // 在挂载完成时向服务器请求数据,先看看Route传递过来的props

// componentDidMount(){

// let id = this.props.match.params.post_id;

// axios.get(“http://jsonplaceholder.typicode.com/posts/” + id).then(res=>{

// // console.log(res);

// this.setState({

// post:res.data

// })

// })

// // console.log(this.props);

// // this.setState({

// // id

// // })

// }

// 数据从redux更新

//删除博客按钮

handleClick = () => {

this.props.deletePost(this.props.post.id);

// 删除之后跳转到home页面

this.props.history.push(‘/’)

}

render() {

// 解构

// const {post} = this.state;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

结尾

正式学习前端大概 3 年多了,很早就想整理这个书单了,因为常常会有朋友问,前端该如何学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。

以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。

戳这里获取前端学习资料

小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

[外链图片转存中…(img-RygCxodi-1712951766204)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

结尾

正式学习前端大概 3 年多了,很早就想整理这个书单了,因为常常会有朋友问,前端该如何学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。

以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。

戳这里获取前端学习资料

前端学习书籍导图-1

  • 14
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值