基础知识

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;

高阶组件

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

最新文章

  1. PageHelper简单实用
  2. IOC和bean容器
  3. obout editor Absolute path for uploaded image
  4. jsf2.0视频
  5. C++:MEMSET的大坑三两事
  6. linux 中c/c++实现终端命令行命令
  7. 史上最全前端面试题(含答案)-A篇
  8. ADC0832的应用
  9. Taro 常用 API
  10. linux 用tcpdump查看80端口访问有哪些IP
  11. Error configuring application listener of class org.springframework.web.util
  12. MyBatis Generator使用示例
  13. nginx负载均衡三:keepalive+nginx双机热备 和负载均衡
  14. 自己写的JdbcUtils小工具-----得到Connection对象
  15. body中相关标签
  16. mssql注入指令
  17. Elementary Sorts
  18. The Ribbon Tab with id: &quot;Ribbon.Read&quot; has not been made available for this page or does not exist.
  19. mvn项目中的pom文件提示Error parsing lifecycle processing instructions解决
  20. ZOJ-3962-数位dp

热门文章

  1. C++ MFC学习 (三)
  2. 如何将PDF文件中的部分信息隐藏或遮盖呢?
  3. python代码编译总结-用于代码加密
  4. RabbitMQ-01-使用Java进行简单消息发送与接收
  5. git 删除本地分支以及远程分支
  6. mysql窗口函数
  7. ssgvip设置
  8. python菜鸟学习: 14. GUI界面化使用
  9. mt5获取双色球
  10. 网络负载均衡LVS