React-组件-内联样式 和 React-组件-列表渲染优化

简介: React-组件-内联样式 和 React-组件-列表渲染优化

前言


内联样式是一种强大的工具,它使开发人员能够在组件级别动态设置样式,而不必依赖外部CSS文件。



React 中的样式



  • React 并没有像 Vue 那样有提供特定的区域给我们编写 CSS 代码
  • 所以你会发现在 React 代码中, CSS 样式的写法千奇百怪




内联样式


内联样式的优点:

  • 内联样式, 样式之间不会有冲突
  • 可以动态获取当前 state 中的状态

内联样式的缺点:

  • 写法上都需要使用驼峰标识
  • 某些样式没有提示
  • 大量的样式, 代码混乱
  • 某些样式无法编写(比如伪类/伪元素)
import React from 'react';
class App extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            color: 'red'
        }
    }
    render() {
        return (
            <div>
                <p style={{fontSize: '50px', color: this.state.color}}>我是段落1</p>
                <p style={{fontSize: '50px', color: 'green'}}>我是段落2</p>
                <button onClick={() => {
                    this.btnClick()
                }}>按钮
                </button>
            </div>
        );
    }
    btnClick() {
        this.setState({
            color: 'blue'
        })
    }
}
export default App;



列表渲染优化


列表渲染优化

  • 由于 diff 算法在比较的时候默认情况下只会进行同层同位置的比较
  • 所以在渲染列表时可能会存在性能问题

往后添加元素

往前添加元素



让 diff 算法递归比较同层所有元素


  • 给列表元素添加 key, 告诉 React 除了和同层同位置比, 还需要和同层其它位置比

官方文档:https://zh-hans.reactjs.org/docs/reconciliation.html#the-diffing-algorithm

App.js:

import React from 'react';
class Home extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            heroList: ['鲁班', '虞姬', '黄忠']
        }
    }
    render() {
        return (
            <div>
                <ul>{
                    this.state.heroList.map(name => {
                        return <li key={name}>{name}</li>
                    })
                }</ul>
                <button onClick={() => {
                    this.btnClick()
                }}>按钮
                </button>
            </div>
        )
    }
    btnClick() {
        this.setState({
            heroList: ['阿珂', ...this.state.heroList]
        })
    }
}
class App extends React.Component {
    render() {
        return (
            <div>
                <Home/>
            </div>
        )
    }
}
export default App;




key 注意点


  • 如果列表中出现相同的 key, 所以我们必须保证列表中 key 的取值唯一,否则会报错

最后


本期结束咱们下次再见👋~

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

相关文章
|
12月前
|
存储 缓存 JavaScript
如何优化React或Vue应用的性能
需要注意的是,性能优化是一个持续的过程,需要根据具体的应用场景和性能问题进行针对性的优化。同时,不同的项目和团队可能有不同的优化重点和方法,要结合实际情况灵活运用这些优化策略,以达到最佳的性能效果。
396 61
|
11月前
|
前端开发 UED 开发者
React 选项卡组件 Tabs:从基础到优化
本文详细介绍了如何在React中构建一个功能丰富的选项卡组件,包括基础实现、样式美化、常见问题及解决方法。通过逐步讲解,从简单的选项卡组件结构开始,逐步引入样式、性能优化、动态内容加载、键盘导航支持和动画效果,最后讨论了自定义样式的实现。旨在帮助开发者在React项目中高效构建高质量的选项卡组件。
367 18
|
11月前
|
前端开发 UED
React 文本区域组件 Textarea:深入解析与优化
本文介绍了 React 中 Textarea 组件的基础用法、常见问题及优化方法,包括状态绑定、初始值设置、样式自定义、性能优化和跨浏览器兼容性处理,并提供了代码案例。
377 10
|
12月前
|
前端开发 JavaScript API
探究 React Hooks:如何利用全新 API 优化组件逻辑复用与状态管理
本文深入探讨React Hooks的使用方法,通过全新API优化组件逻辑复用和状态管理,提升开发效率和代码可维护性。
|
前端开发 JavaScript 算法
React 渲染优化策略
【10月更文挑战第6天】React 是一个高效的 JavaScript 库,用于构建用户界面。本文从基础概念出发,深入探讨了 React 渲染优化的常见问题及解决方法,包括不必要的渲染、大量子组件的渲染、高频事件处理和大量列表渲染等问题,并提供了代码示例,帮助开发者提升应用性能。
208 6
|
JSON 前端开发 JavaScript
【简单粗暴】如何使用 React 优化 AG 网格性能
【简单粗暴】如何使用 React 优化 AG 网格性能
292 3
|
前端开发 UED 开发者
React组件优化全攻略:深度解析让你的前端应用飞速运行的秘诀——从PureComponent到React.memo的彻底性能比较
【8月更文挑战第31天】在构建现代Web应用时,性能是提升用户体验的关键因素。React作为主流前端库,其组件优化尤为重要。本文深入探讨了React组件优化策略,包括使用`PureComponent`、`React.memo`及避免不必要的渲染等方法,帮助开发者显著提升应用性能。通过实践案例对比优化前后效果,不仅提高了页面渲染速度,还增强了用户体验。优化React组件是每个开发者必须关注的重点。
245 0
|
1月前
|
缓存 前端开发 JavaScript
React Hooks深度解析与最佳实践:提升函数组件能力的终极指南
🌟蒋星熠Jaxonic,前端探索者。专注React Hooks深度实践,从原理到实战,分享状态管理、性能优化与自定义Hook精髓。助力开发者掌握函数组件的无限可能,共赴技术星辰大海!
React Hooks深度解析与最佳实践:提升函数组件能力的终极指南
|
6月前
|
缓存 前端开发 数据安全/隐私保护
如何使用组合组件和高阶组件实现复杂的 React 应用程序?
如何使用组合组件和高阶组件实现复杂的 React 应用程序?
270 68
|
6月前
|
缓存 前端开发 Java
在 React 中,组合组件和高阶组件在性能方面有何区别?
在 React 中,组合组件和高阶组件在性能方面有何区别?
248 67