基础知识

css-module

react 将js转为vdom,react-dom将vdom转为dom

// 外面一层是一个动态值,里面的表示的是对象
<img src={logo} style = {{width: 200px}} />

webpack里配置的如果要用模块化作用需要模块化导出,形式如下

模块化css模块很有必要,将 css 文件命名为xxx.module.css,引入的时候赋予其名称,在标签上使用时带上名称和css属性名即可。

import style from './index.module.css'

// use
<img src={logo} className={style.img} />

问题 :

  • 多个className如何实现
  • 公共样式和模块样式的使用
  • less语法的使用需要配置吗?

Context

import React, {Component} from 'react';

// 创建上下文
const Context = React.createContext(); // 创建提供者
const Provider = Context.Provider; // 创建消费者
const Consumer = Context.Consumer; function Child(props) {
return (
<button onClick={() => {
props.addNum();
}}>
{props.number}
</button>
);
} class ContextApp extends Component {
constructor(props) {
super(props);
this.state = {
number: 0
};
} addNum = () => {
this.setState({
number: this.state.number + 1
});
}; render() {
return (
<Provider value={{ number: this.state.number, addNum: this.addNum }}>
<Consumer>
{value =>
<Child {...value}/>
}
</Consumer>
</Provider>
);
}
} export default ContextApp;

组件复合

类比于vue的插槽功能

import React from 'react';

function Slot(props) {
return (
<div>{props.children}</div>
);
} // 复合组件的使用
function Composition(props) {
return (
<div>
<Slot>
<h1>我是标题</h1>
<h3>我是内容</h3>
</Slot>
</div>
);
} export default Composition;

jsx是一个对象,我们返回具有名称的复合组件子组件可以通过 props.children.xxx 获得

import React from 'react';

function Slot(props) {
return (
<div>
{props.children.body}
{props.children.footer}
</div>
);
} // 复合组件的使用
function Composition(props) {
return (
<div>
<Slot>
{{
body: (
<>
<h1>我是标题</h1>
<h3>我是内容</h3>
</>
),
footer: (
<>
<h1>我是Footer</h1>
</>
)
}}
</Slot>
</div>
);
} export default Composition;
import React from 'react';

function Slot(props) {
const file = {
one: { values: 'aaa', keys: 333 },
two: { values: 'bbb', keys: 444 },
};
// 传递值给插槽处
const { body, footer } = props.children(file[props.fileId]);
return (
<div>
{body}
{footer}
</div>
);
} // 复合组件的使用
function Compons(props) {
return (
<div>
<Slot fileId={'one'}>
{
({ values, keys }) => ({
body: (<><h1>我是标题</h1><h3>value: {values}--- key:{keys}</h3></>),
footer: (<><h1>我是Footer</h1></>)
})
}
</Slot>
</div>
);
} export default Compons;

高阶组件

接收一个组件作为参数,返回一个组件

react 基础知识的更多相关文章

  1. React基础知识

    学习文档(按优先级排列)http://reactjs.cn/react/docs/tutorial-zh-CN.htmlhttp://www.cnblogs.com/Mrs-cc/p/4969755. ...

  2. React基础知识备忘

    section-1 //react组件 export class Halo extends React.Component{ constructor(...args){ super(...args); ...

  3. React 基础知识总结

    data-id="1190000016885142" data-license=""> 一.Node.js Node.js并不是一个JavaScript框 ...

  4. React开发实时聊天招聘工具 -第三章 React基础知识回顾

    function a (props) { return <h1>hello world{this.props.asd}</h1> } class a extends React ...

  5. React入门---基础知识-大纲-1

    -----------------在慕课网学习react入门笔记-------------- ---------博主边学边记录,手把手进行学习及记录---------- --------------- ...

  6. 【温故知新】—— React/Redux/React-router4基础知识&独立团Demo

    前言:React专注View层,一切皆组件:全部使用ES6语法,最新版本为React16. Redux是专注于状态管理的库,和react解耦:单一状态,单向数据流.[独立团github地址] 一.Re ...

  7. React Native 入门基础知识总结

    中秋在家闲得无事,想着做点啥,后来想想,为啥不学学 react native.在学习 React Native 时, 需要对前端(HTML,CSS,JavaScript)知识有所了解.对于JS,可以看 ...

  8. React:快速上手(1)——基础知识

    React:快速上手(1)——基础知识 React(有时叫React.js或ReactJS)是一个为数据提供渲染为HTML视图的开源JavaScript库,用于构建用户界面. JSX.元素及渲染 1. ...

  9. 学习React之前你需要知道的的JavaScript基础知识

    在我的研讨会期间,更多的材料是关于JavaScript而不是React.其中大部分归结为JavaScript ES6以及功能和语法,但也包括三元运算符,语言中的简写版本,此对象,JavaScript内 ...

  10. React学习笔记(一) 基础知识

    现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和组件化的开发深深的吸引了我. React的基 ...

随机推荐

  1. grafana嵌入iframe,去除菜单和上方工具条

    1.首先修改grafana的配置:etc/grafana/grafana.ini,修改下面这两个配置为true 2.由于项目使用了nginx,要启用https,需要修改下面这几个配置:(不需要启用ht ...

  2. CSS实现开门效果

    .door{ position: relative; width: 450px; height: 300px; border: 1px solid #000; margin: 100px auto; ...

  3. 查看docker 运行的参数 pip3 install runlike runlike 容器ID

  4. Unity模型剖切

    效果展示 1.首先先下载一个模型剖切插件Cross-Section插件 没有的下方链接自取 插件下载链接 2.下载之后导入到项目  导入之后的样子如下图 因项目需求需要剖切模型,要使用滑动条进行剖切, ...

  5. deepinlinux安装golang

    Download 从 Google 官方获取安装包,不用FQ直接访问 http://golang.google.cn,选择 Linux 的安装包如 go1.14.linux-amd64.tar.gz ...

  6. CRON表达式转换成中文

    目录 1,cron表达式生成器 2,cron表达式 一,结构 二.各字段的含义 三.常用表达式例子 3,转换成中文: 1,CronExpParserUtil 2,WeekEnum 3,测试: 4,测试 ...

  7. java.net.ConnectException: Your endpoint configuration is wrong; For more details see: http://wiki.apache.org/hadoop/UnsetHostnameOrPort

    今天使用在hive中建表,并在hive中将查询到的语句插入到新表中时,一直开在如图所示位置不动 等待了20多分钟,然后报了这么个错 java.net.ConnectException: Your en ...

  8. win系统airtest+pytest-xdist服务器分布式运行。

    1.准备至少两台服务器,集群全部是局域网,(启动脚本的时候可以使用外网ip). 2.输出的报告地址,需要把文件夹设置成共享文件夹,(连接的时候使用内外ip). 启动脚本文件 import os, da ...

  9. 使用EmguCV3.0.0调用摄像头并设置帧率

    此教程使用emgu3.0.0,其他版本兼容性未知. 转载请注明出处: http://www.cnblogs.com/zaiyuzhong/p/open-camera-with-emgu3_0_0.ht ...

  10. props其他-混入mixin-插件-elementui使用-localStorage系列-vueRouter-vuex

    目录 props其他-混入mixin-插件-elementui使用-localStorage系列-vueRouter-vuex 今日内容概要 今日内容详细 1 props其他 2 混入mixin 3 ...