账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    react-redux的优化之路
    53
    0
    初次接触react-redux,写下来总是感觉有点繁琐。有什么办法能够简化吗?使用过程: index.jsimport React from 'react';import ReactDOM from 'react-dom';import App from './App';import store from './redux/store'import { Provider } from 'react-redux'ReactDOM.render( <Provider store={store}> <App /> </Provider>, document.getElementById('root'))store.js本来视频课程里面的store被抽成了好几个js文件,我觉得麻烦就合并在了一起,合并跟拆开有什么差别,大佬还请告知。import {createStore, applyMiddleware} from 'redux'// 用于支持异步actionimport thunk from 'redux-thunk'const states = { INCREMENT: 'increment',// 增加 DECREMENT: 'decrement',// 减少}const refucers = (state = 0, action) => { const {type, data} = action switch (type) { case states.INCREMENT: return state + data case states.DECREMENT: return state - data default: return state }}export const mutations = { INCREMENTACTION: data => ({type: states.INCREMENT, data}), DECREMENTACTION: data => ({type: states.DECREMENT, data}),}export const actions = { INCREMENTACTIONASYNC: (data, time) => { return (dispatch) => { setTimeout(() => { dispatch(mutations.INCREMENTACTION(data)) }, time); } }}// 这是单独抽出来的文件内容, 在调用里面会用到// // 同步action, action的值为object类型的一般对象// export const INCREMENTACTION = data => ({type: INCREMENT, data})// export const DECREMENTACTION = data => ({type: DECREMENT, data})// export const ADD_PERSONACTION = data => ({type: ADD_PERSON, data})// // 异步action, action的值为函数// export const INCREMENTACTIONASYNC = (data, time) => {// return (dispatch) => {// setTimeout(() => {// dispatch(INCREMENTACTION(data))// }, time);// }// }export default createStore(refucers, applyMiddleware(thunk))组件调用import React, { Component } from 'react'import { connect } from "react-redux";import { mutations } from "../../redux/store";// 跟上面的分别暴露调用相关代码// import { INCREMENTACTION, DECREMENTACTION, INCREMENTACTIONASYNC } from "../../redux/store";class CountUI extends Component { increment = () => { const { value } = this.selectNumber this.props.increments(value*1) } decrement = () => { const { value } = this.selectNumber this.props.decrements(value*1) } render() { console.log(this.props); return ( <div> <h1>value: {this.props.count}</h1> <select ref={c => this.selectNumber = c}> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <button onClick={this.increment}>+</button> <button onClick={this.decrement}>-</button> </div> ) }}// 1. 映射状态// 2. 映射操作状态的方法export default connect( state => ({count: state}), { increments: mutations.INCREMENTACTION, decrements:mutations.DECREMENTACTION, }, // { 这种是比较期待的书写形式, 而不是上面那种,如果不想要上面那种引用,又要下面这种格式,就又需要结构赋值一遍 // INCREMENTACTION, // DECREMENTACTION, // INCREMENTACTIONASYNC // })(CountUI)怎样才能更优化简洁一点呢, vuex的书写个人还是蛮喜欢的。
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 旧人旧事旧回忆 普通会员 1楼

      React Redux 是一个流行的前端库,用于管理状态和副作用。它通过 React 的组件化编程和 Redux 的状态管理机制来优化前端应用程序的性能和可维护性。

      优化React Redux的路径:

      1. 使用 React 的 context API:Redux 的 context API 可以让你在应用中共享数据,而无需在组件间传递状态。这可以大大减少组件之间的状态通信,提高应用程序的性能。

      2. 使用 Redux 的 Provider:Redux 的 Provider 是一个特殊的组件,它在你的应用中创建了一个状态树,所有其他组件都可以通过 Provider 获取状态。这可以避免在组件间传递状态,从而提高应用程序的性能。

      3. 使用 Redux 的 async/await:React Redux 的 async/await 支持异步操作,这可以提高应用程序的性能。你可以在组件的 useEffectuseReducer 中使用 async/await,而不是在子组件中等待。

      4. 使用 Redux 的 pure render:Redux 的 pure render 使你可以在组件之间传递纯数据,而不是副作用。这可以避免在组件间传递状态,从而提高应用程序的性能。

      5. 使用 Redux 的 slice 函数:Redux 的 slice 函数可以帮助你处理大型数据集,而不需要重新渲染整个应用。这可以大大提高应用程序的性能。

      6. 使用 Redux 的树形状态:Redux 的树形状态可以帮助你更好地组织和管理应用程序的状态。这可以提高应用程序的可维护性。

      7. 使用 Redux 的 middleware:Redux 的 middleware 可以在中间件之间传递数据,从而简化你的应用程序。这可以大大提高应用程序的性能。

      8. 使用 Redux 的 filter 和 map 函数:Redux 的 filter 和 map 函数可以帮助你过滤和操作数据,从而提高应用程序的性能。

      以上就是 React Redux 的优化之路。

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部