P23:优化-React-redux程序优化

AI 概述
本文主要内容把现在写的代码优化一下,程序的都应该有一些代码洁癖,就像我们人穿衣服一样,一定要干净得体才能提升气质,同样我们写代码也一样,干净有条理才能写出让人称赞的程序。写完业务逻辑后作代码优化,也是程序员的本质工作之一。 用结构复制精简代码 现在代码中有好几处this.props都是重复的,这时候就可以用j...

本文主要内容把现在写的代码优化一下,程序的都应该有一些代码洁癖,就像我们人穿衣服一样,一定要干净得体才能提升气质,同样我们写代码也一样,干净有条理才能写出让人称赞的程序。写完业务逻辑后作代码优化,也是程序员的本质工作之一。

用结构复制精简代码

现在代码中有好几处this.props都是重复的,这时候就可以用javascript的解构赋值方法,来精简代码。修改TodoList.js中的Render函数,把原来带代码修改为下面的代码:

render() {
    let {inputValue ,inputChange,clickButton,deleteItem,list} = this.props; 
    return ( 
        <div>
            <div>
                <input
                    value={inputValue}
                    onChange={inputChange} />
                <button onClick={clickButton}>提交</button>
            </div>
            <ul>
                {
                    list.map((item,index)=>{
                        return (
                            <li
                                key={index}
                                onClick={deleteItem}
                                >{item}</li>
                        )
                    })
                }
            </ul>
        </div>
        );
}

把 TodoList 改为 UI 组件-提高性能

可以看到,现在的TodoList组件里没有任何的业务逻辑,只有一个Render方法,这时候就可以把它改为 UI 组件(无状态组件),UI 组件就是一个方法,减少很多冗余操作,从而提高程序运行性能。这时候重新声明一个TodoList的变量,然后把 render 函数里的东西复制过来,只要稍加修改,就可以得到下面的代码:

const TodoList = (props) => {
    let {inputValue ,inputChange,clickButton,deleteItem,list} = props; 
    return ( 
        <div>
            <div>
                <input
                    value={inputValue}
                    onChange={inputChange} />
                <button onClick={clickButton}>提交</button>
            </div>
            <ul>
                {
                    list.map((item,index)=>{
                        return (
                            <li
                                key={index}
                                onClick={deleteItem}
                                >{item}
                            </li>
                        )
                    })
                }
            </ul>
        </div>
    );
}

代码写完后,我们删除一些不用的引入,然后就可以到浏览器中进行预览了。

import React from 'react';
import {connect} from 'react-redux'

为了更好的学习,我在这里给出目前TodoList.js的所有代码。

import React from 'react';
import {connect} from 'react-redux'

const TodoList = (props) => {
    let {inputValue ,inputChange,clickButton,deleteItem,list} = props; 
    return ( 
        <div>
            <div>
                <input
                    value={inputValue}
                    onChange={inputChange} />
                <button onClick={clickButton}>提交</button>
            </div>
            <ul>
                {
                    list.map((item,index)=>{
                        return (
                            <li
                                key={index}
                                onClick={deleteItem}
                                >{item}
                            </li>
                        )
                    })
                }
            </ul>
        </div>
    );
}

const stateToProps = (state) => {
    return {
        inputValue: state.inputValue,
        list: state.list
    }
}

const dispatchToProps = (dispatch) => {
    return {
        inputChange(e){
            let action = {
                type: 'change_input',
                value: e.target.value
            }
            dispatch(action)
        },
        clickButton(){
            let action = {
                type: 'add_item'
            }
            dispatch(action)
        },
        deleteItem(index){
            let action = {
                type: 'delete_item',
                index
            }
            dispatch(action)
        }
    }
}
 
export default connect(stateToProps,dispatchToProps)(TodoList);

那我们反过来,再来理解一下最后一句话代码的意思。

export default connect(stateToProps,dispatchToProps)(TodoList);

connect的作用是把 UI 组件(无状态组件)和业务逻辑代码的分开,然后通过 connect 再链接到一起,让代码更加清晰和易于维护。这也是React-Redux最大的有点。

以上关于P23:优化-React-redux程序优化的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » P23:优化-React-redux程序优化

发表回复