【React】React中编写CSS,Redux

这篇具有很好参考价值的文章主要介绍了【React】React中编写CSS,Redux。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

❤️ Author: 老九
☕️ 个人博客:老九的CSDN博客
🙏 个人名言:不可控之事 乐观面对
😍 系列专栏:

React中编写CSS

内联样式

  • style接受一个采用小驼峰命名属性的JS对象,而不是CSS字符串,可以动态获取当前state中的状态
  • 缺点:1.写法上面需要使用驼峰2.编写样式没有提示3.大量的样式,代码混乱4.某些样式无法编写(比如伪类、伪元素)
    【React】React中编写CSS,Redux

普通css

  • 普通css通常会编写到一个单独的文件,之后再进行引入
  • 缺点组件化开发中普通的css都属于全局的css,css没有作用域,样式之间会相互影响
    【React】React中编写CSS,Redux

css modules

  • 需要把样式文件修改成.module形式,css modules解决了局部作用域的问题,但是引用的类名不能使用连接符号-,所有的className必须使用xxx.xxxx的形式来编写
    【React】React中编写CSS,Redux
    【React】React中编写CSS,Redux
    这种类的写法是不行的
    【React】React中编写CSS,Redux

css in js

  • CSS in js是一种模式,其中CSS由js生成的而不是在外部文件中定义;注意此功能不是React的一部分,由第三方库提供
  • 目前比较流行的是styled-components
    【React】React中编写CSS,Redux

标签模板字符串

正常的ES6模板字符串,这样使用
【React】React中编写CSS,Redux
而标签模板字符串,这样使用,相当于是调用了foo这个函数,然后把name和age传进去
【React】React中编写CSS,Redux
得到的结果是这样的,分成三块,然后里面的模板的值作为数组传递进去
【React】React中编写CSS,Redux
在代码中是这样拆分的
【React】React中编写CSS,Redux

如何在React中使用css in js

创建一个style.js的文件,然后建一个AppWrapper变量,这个就相当于是一个div,styled.div的意思是调用styled-components库中的div函数,然后后面写的就是使用模板标签字符串,来添加css样式
【React】React中编写CSS,Redux
在App.jsx中使用AppWrapper元素
【React】React中编写CSS,Redux

css in js 高级特性

  • 可以引入this.state中传入的变量
    【React】React中编写CSS,Redux
    通过写一个函数,调用传入的值参数为props的那个函数,自动回调从App组件传入的值
    【React】React中编写CSS,Redux
    【React】React中编写CSS,Redux

attrs属性

通过attrs属性,可以自己给样式组件加属性
attrColor如果App组件没传值,就用blue,如果传值了,就用传过来的props
【React】React中编写CSS,Redux

继承styled

通过styled()括号里写需要继承的样式
【React】React中编写CSS,Redux

ThemeProvider全局提供样式

通过ThemeProvider的theme里面写上样式,每个样式组件的props.theme中就都有这个属性了,写法是驼峰式的,jsx中没有横线“-”的写法,都是转成驼峰式的
【React】React中编写CSS,Redux

动态添加class

【React】React中编写CSS,Redux
【React】React中编写CSS,Redux
【React】React中编写CSS,Redux

Redux

如何创建redux

【React】React中编写CSS,Redux
【React】React中编写CSS,Redux

修改store中的数据

  • 通过store.getState()可以获取store中的数据,通过store.dispatch({
    type:“xxx”
    xxx:xxx
    }),调用这个方法之后,store就会将旧的state和dispatch中的对象一起传给reduer,然后传到reducer中实现更新,reducer返回一个state

【React】React中编写CSS,Redux

const store = createStore(reducer, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());

【React】React中编写CSS,Redux
【React】React中编写CSS,Redux

订阅store中的数据

  • subscribe
    【React】React中编写CSS,Redux
    【React】React中编写CSS,Redux

actionTypes的抽取

【React】React中编写CSS,Redux
【React】React中编写CSS,Redux

【React】React中编写CSS,Redux

actionCreators的抽取

【React】React中编写CSS,Redux

react-redux

【React】React中编写CSS,Redux

  • 通过这个库,可以将我们的react的jsx页面和Redux更方便的联系在一起
    【React】React中编写CSS,Redux
    【React】React中编写CSS,Redux
    【React】React中编写CSS,Redux

connect原理

  • 用在类组件中,函数组件直接使用useseletor获取值,usedispatch更新值就可以了
    【React】React中编写CSS,Redux
    下面是connect源码
    【React】React中编写CSS,Redux

redux发送异步请求

  • 通过安装redux-thunk,dispatch只能返回一个对象,如果加了redux-thunk中间件,就可以返回函数,从而实现异步请求
    【React】React中编写CSS,Redux
    【React】React中编写CSS,Redux
    【React】React中编写CSS,Redux
    【React】React中编写CSS,Redux

实现Redux

import { createContext, useContext, useEffect, useState } from "react";
export function createStore(reducer) {
  var state; // 存储应用程序状态的变量
  var action; // 最近一次分发的操作

  state = reducer(state, action); // 使用初始状态和初始操作来初始化状态

  var subscribes = []; // 存储订阅函数的数组

  return {
    getState() {
      return state; // 返回当前的状态
    },

    dispatch(action) {
      state = reducer(state, action); // 使用传入的操作和当前状态来更新状态
      for (var sub of subscribes) {
        sub(); // 通知所有订阅者,状态已更新
      }
      return action; // 返回分发的操作
    },

    subscribe(f) {
      subscribes.push(f); // 将订阅函数添加到订阅数组中
      return () => {
        var idx = subscribes.indexOf(f);
        if (idx >= 0) {
          subscribes.splice(idx, 1); // 取消订阅函数
        }
      };
    },
  };
}

export function connnect() {}

var ReduxContext = createContext();
//创建一个名字,可以在开发工具中的组件树展示出来
ReduxContext.displayName = "ReduxContext";
export function Provider(props) {
  //<Provider store = {store}><App/></Provider>
  var { store, children } = props;
  var [Change, setChange] = useState(0);
  useEffect(() => {
    var unsub = store.subscribe(() => {
      setChange((Change) => Change + 1);
    });
    return unsub;
  }, []);

  return (
    <ReduxContext.Provider value={{ store: store }}>
      {children}
    </ReduxContext.Provider>
  );
}

export function useSelector(selector) {
  var store = useContext(ReduxContext).store;
  var state = store.getState();
  return selector(state);
}

export function useDispatch() {
  var store = useContext(ReduxContext).store;
  return store.dispatch;
}

————————————————————————
♥♥♥码字不易,大家的支持就是我坚持下去的动力♥♥♥
版权声明:本文为CSDN博主「亚太地区百大最帅面孔第101名」的原创文章
文章来源地址https://www.toymoban.com/news/detail-486530.html

到了这里,关于【React】React中编写CSS,Redux的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【React】redux和React-redux

    🎀个人主页:努力学习前端知识的小羊 感谢你们的支持:收藏🎄 点赞🍬 加关注🪐 redux 适用于多交互、多数据源的场景。 使用redux的场景: 某个组件的状态需要共享 一个组件需要改变其他组件的状态时 一个组件需要改变全局的状态时 redux的三大原则: 整个应用的 state

    2024年02月06日
    浏览(57)
  • React中使用Redux (一) - 在React中直接使用Redux

    开始之前需要强调一下,redux和react没有直接的关系,你完全可以在React, Angular, Ember, jQuery, or vanilla JavaScript中使用Redux 。 尽管这样说,redux依然是和React库结合的更好,因为他们是通过state函数来描述界面的状态,Redux可以发射状态的更新, 让他们作出相应; 目前redux在react中使

    2024年01月23日
    浏览(59)
  • 在react中使用redux && react-redux的使用demo

    前言: redux是一种状态管理工具,可以存储和操作一些全局或者很多组件需要使用的公共数据。 平心而论,redux的使用对于新上手来说不太友好,多个依赖包的,多种api的结合使用,相对来说比做同样一件事的vuex用起来比较麻烦.不过,熟能生巧,用多了也就习惯了,下面是个人的一个d

    2024年02月06日
    浏览(55)
  • 【React】React——redux

    🚩🚩🚩 💎个人主页: 阿选不出来 💨💨💨 💎个人简介: 一名大二在校生,学习方向前端,不定时更新自己学习道路上的一些笔记. 💨💨💨 💎目前开发的专栏: JS 🍭Vue🍭React🍭 💨💨💨 Redux 是 JavaScript 状态容器,提供可预测化的状态管理。 redux是什么 redux是一个专门用于

    2024年01月15日
    浏览(47)
  • 什么是redux?如何在react 项目中使用redux?

    redux是一种用于管理JavaScript应用程序的状态管理库。它可以与React、Augular、Vue等前端框架结合使用,但也可以纯在JavaScript应用程序中独立使用。redux遵循单项数据流的原则,通过一个全局的状态树来管理应用程序的状态,从而使状态的变化更加可预测和已于维护。 redux的核心

    2024年02月15日
    浏览(40)
  • react-redux:

    index.js: reducer.js: 组件: src/index.js:

    2024年02月15日
    浏览(39)
  • React笔记(八)Redux

    一、安装和配置 React 官方并没有提供对应的状态机插件,因此,我们需要下载第三方的状态机插件 —— Redux。 1、下载Redux 在终端中定位到项目根目录,然后执行以下命令下载 Redux 2、创建配置文件 在 React 中,不会自动生成状态机的相关配置代码,因此,需要我们自己手动

    2024年02月10日
    浏览(41)
  • React(六) —— redux

    🧁个人主页:个人主页 ✌支持我 :点赞👍收藏🌼关注🧡 redux最主要是用作应用状态的管理。简言之,Redux用一个单独的常量状态树(state对象)保存这一整个应用的状态,这个对象不能直接被改变。当一些数据变化了,一个新的对象就会被创建(使用actions和reducers)这样就

    2023年04月16日
    浏览(34)
  • React | 再战Redux

    ✨ 个人主页:CoderHing 🖥️ React.js专栏:React.js 再战Redux 🙋‍♂️ 个人简介:一个不甘平庸的平凡人🍬 💫 系列专栏:吊打面试官系列  16天学会Vue  7天学会微信小程序  Node专栏 🍀 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️ 👉 你的一键三连是我更新的最大动力!

    2024年02月12日
    浏览(47)
  • React中使用Redux

            redux是一个专门用于状态管理的一个库,和vue中的vuex功能类似。其中核心点就是状态的管理。虽然我们无论在vue还是在react中我们组件间的通行都可以使用消息总线或者父子组件间的消息传递来进行操作。但是如果我们需要A组件的状态在其他十个或者二十个组件上进

    2024年02月16日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包