iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >在React中如何使用Vuex
  • 249
分享到

在React中如何使用Vuex

2024-04-02 19:04:59 249人浏览 薄情痞子
摘要

这篇文章给大家分享的是有关在React中如何使用Vuex的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。如何使用一:创建Store实例:与vuex一样,使用单一状态树(一个对象)包

这篇文章给大家分享的是有关在React中如何使用Vuex的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

如何使用

一:创建Store实例:

与vuex一样,使用单一状态树(一个对象)包含全部的应用层级状态(store)。

store可配置state,mutations,actions和modules属性:

  1. state :存放数据

  2. mutations :更改state的唯一方法是提交 mutation

  3. actions :Action 提交的是 mutation,而不是直接变更状态。Action 可以包含任意异步操作,触发mutation,触发其他actions。

支持中间件:中间件会在每次mutation触发前后执行。

store.js:

import {createStore} from 'ruex'
const state = {
 total_num:1111,
}
const mutations = {
 add(state,payload){
 state.total_num += payload
 },
 double(state,payload){
 state.total_num = state.total_num*payload
 },
}
const actions = {
 addAsync({state,commit,rootState,dispatch},payload){
 setTimeout(()=>{
 commit('add',payload)
 },1000)
 },
 addPromise({state,commit,rootState,dispatch},payload){
 return fetch('https://api.GitHub.com/search/users?q=haha').then(res=>res.JSON())
 .then(res=>{
 commit('add',1)
 dispatch('addAsync',1)
 })
 },
 doubleAsync({state,commit,rootState,dispatch},payload){
 setTimeout(()=>{
 commit('double',2)
 },1000)
 },
 doublePromise({state,commit,rootState,dispatch},payload){
 return fetch('Https://api.github.com/search/users?q=haha').then(res=>res.json())
 .then(res=>{
 commit('double',2)
 dispatch('doubleAsync',2)
 })
 },
}
// middleware
const logger = (store) => (next) => (mutation,payload) =>{
 console.group('before emit mutation ',store.getState())
 let result = next(mutation,payload)
 console.log('after emit mutation', store.getState())
 console.groupEnd()
}
// create store instance
const store = createStore({
 state,
 mutations,
 actions,
},[logger])
export default store

将Store实例绑定到组件上

ruex提供Provider方便store实例注册到全局context上。类似react-redux的方式。

App.js:

import React from 'react'
import {Provider} from 'ruex'
import store from './store.js'
class App extends React.Component{
 render(){
 return (
  <Provider store={store} >
  <Child1/>
  </Provider>
 )
 }
}

使用或修改store上数据

store绑定完成后,在组件中就可以使用state上的数据,并且可以通过触发mutation或action修改state。具体的方式参考react-redux的绑定方式:使用connect高阶组件。

Child1.js:

import React, {PureComponent} from 'react'
import {connect} from 'ruex'
class Chlid1 extends PureComponent {
 state = {}
 constructor(props) {
 super(props);
 }

 render() {
 const {
 total_num,
 } = this.props
 return (
 <div className=''>
 <div className="">
 total_num: {total_num}
 </div>

 <button onClick={this.props.add.bind(this,1)}>mutation:add</button>
 <button onClick={this.props.addAsync.bind(this,1)}>action:addAsync</button>
 <button onClick={this.props.addPromise.bind(this,1)}>action:addPromise</button>
 <br />
 <button onClick={this.props.double.bind(this,2)}>mutation:double</button>
 <button onClick={this.props.doubleAsync.bind(this,2)}>action:doubleAsync</button>
 <button onClick={this.props.doublePromise.bind(this,2)}>action:doublePromise</button>
 </div>)
 }
}


const mapStateToProps = (state) => ({
 total_num:state.total_num,
})
const mapMutationsToProps = ['add','double']
const mapActionsToProps = ['addAsync','addPromise','doubleAsync','doublePromise']

export default connect(
 mapStateToProps,
 mapMutationsToProps,
 mapActionsToProps,
)(Chlid1)

API:

  1. mapStateToProps :将state上的数据绑定到当前组件的props上。

  2. mapMutationsToProps : 将mutation绑定到props上。例如:调用时通过this.props.add(data)的方式即可触发mutation,data参数会被mutaion的payload参数接收。

  3. mapActionsToProps : 将action绑定到props上。

内部实现

ruex内部使用immer维护store状态更新,因此在mutation中,可以通过直接修改对象的属性更改状态,而不需要返回一个新的对象。例如:

const state = {
 obj:{
 name:'aaaa'
 }
}
const mutations = {
 changeName(state,payload){
 state.obj.name = 'bbbb'
 // instead of 
 // state.obj = {name:'bbbb'}
 },
}

支持modules(暂不支持namespace)

支持中间件。注:actions已实现类似redux-thunk的功能

感谢各位的阅读!关于“在React中如何使用Vuex”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: 在React中如何使用Vuex

本文链接: https://www.lsjlt.com/news/77563.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 在React中如何使用Vuex
    这篇文章给大家分享的是有关在React中如何使用Vuex的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。如何使用一:创建Store实例:与vuex一样,使用单一状态树(一个对象)包...
    99+
    2024-04-02
  • react如何在React html中使用
    本篇文章为大家展示了react如何在React html中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。基本使用<!DOCTYPE html><html l...
    99+
    2023-06-14
  • 如何在Vue项目中使用vuex
    目录在Vue项目中使用vuex一、安装vuex二、创建store三、挂载store四、在组件中使用五、在Vue组件中监听Vuex总结在Vue项目中使用vuex 在一个vue项目中使用...
    99+
    2023-01-28
    Vue使用vuex Vue vuex Vue项目中使用vuex
  • hook如何在react中使用
    今天就跟大家聊聊有关hook如何在react中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、什么是hook?react hook是react 16.8推出的方法,能够让函数式...
    99+
    2023-06-14
  • setState如何在react 中使用
    setState如何在react 中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。setState是同步还是异步自定义合成事件和react钩子函数中异步更新state以...
    99+
    2023-06-14
  • Vue3中Vuex如何使用
    这篇文章主要介绍“Vue3中Vuex如何使用”,在日常操作中,相信很多人在Vue3中Vuex如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue3中Vuex如何使用”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-06
  • 如何使用Vuex
    小编给大家分享一下如何使用Vuex,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是Vuex?vuex是一个专门为vue.js...
    99+
    2024-04-02
  • 如何在React项目中使用AntDesign
    目录0.前言1.AntDesign是什么?2.AntDesign如何使用?3.如何具体使用AntDdesign的组件3-1.如何使用 antd 的Table组件3-2.如何使用 an...
    99+
    2024-04-02
  • 如何在React框架中使用SpreadJS
    如何在React框架中使用SpreadJS,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。第1步:设置HTML5页面首先,我们需要在页面中添加对React的引用:...
    99+
    2023-06-04
  • 如何在React中直接使用Redux
    React中使用Redux 开始之前需要强调一下,redux和react没有直接的关系,你完全可以在React, Angular, Ember, jQuery, or vanilla...
    99+
    2022-11-13
    React使用Redux React Redux用法
  • vuex如何使用
    这篇文章主要为大家展示了“vuex如何使用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vuex如何使用”这篇文章吧。什么是Vuex?vuex是一个专门为vue...
    99+
    2024-04-02
  • vue3+vite中如何使用vuex
    本篇内容主要讲解“vue3+vite中如何使用vuex”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue3+vite中如何使用vuex”吧!具体步骤:安装vuex( vue3建议 4.0+ )...
    99+
    2023-07-04
  • 在HTML页面中如何使用React
    这篇文章主要介绍了在HTML页面中如何使用React的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇在HTML页面中如何使用React文章都会有所收获,下面我们一起来看看吧。该方案使用场景:在html页面中使用r...
    99+
    2023-06-29
  • 在react中如何使用mockjs方法
    本篇内容主要讲解“在react中如何使用mockjs方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在react中如何使用mockjs方法”吧!介绍mock意为“模仿”或"模拟&qu...
    99+
    2023-06-29
  • 在React、Vue项目中如何使用SVG
    这篇文章将为大家详细讲解有关在React、Vue项目中如何使用SVG,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在一些现代的扁平化设计网站,特别是移动端网站,经常会包含...
    99+
    2024-04-02
  • vuex在vue3中怎么使用
    这篇文章主要介绍“vuex在vue3中怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vuex在vue3中怎么使用”文章能帮助大家解决问题。在vue3中,vuex用于储存和管理所有组件的状态,...
    99+
    2023-06-29
  • vuex中mutation和action如何使用
    vuex中mutation和action如何使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、mutation在vue 中,只有mut...
    99+
    2024-04-02
  • Vue项目中如何使用vuex
    这篇文章主要介绍“Vue项目中如何使用vuex”,在日常操作中,相信很多人在Vue项目中如何使用vuex问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue项目中如何使用vuex”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-05
  • React中如何使用scss
    这篇文章主要介绍“React中如何使用scss”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“React中如何使用scss”文章能帮助大家解决问题。React中使用scss首先导入node-sass ...
    99+
    2023-07-05
  • React中如何使用Redux
    这篇文章主要讲解了“React中如何使用Redux”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“React中如何使用Redux”吧!Redux 是一种状态容器 JS 库,提供可预测的状态管理...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作