可以把context理解成一个全局变量,值是一个对象,其他组件(类组件、函数组件)可以直接使用。
原理:
最终class类名的生成有多个因素构成:组件名称 + 样式内容生成的hash值 + ...
定位:
通过配置,可以自定义类名的生成方式
可以在使用组件时添加自定义类名
深入且全面的学习一个库,能够解决日常开发中的几乎所有问题。
this:当前类(Welcome)的实例,super:代表父类(React.Component)构造函数,使用当前类中的属性(props),直接用this.props即可。
不用target已经表示的是input这个元素对象
应该是consol.log(event.target[0].value )
我建议用const,
因为是无条件渲染子组件的,你可以用PureComponent或者memo来处理一下
是个析构写法,相当于 comments = props.comments;
箭头函数,可以 这么写 () => <li>abc</li> 等同于 () => { return <li>abc</li> } 是一种简写的方式
所以老师代码中正确的写法应该是:
写法1
写法2
少了个花括号
我感觉是在dom加载的时候,理应是返回一个函数(不加“()”)。如果你加了括号,这代表着去执行他。
每次刷新都会加载dom,而在加载dom的时候却执行了这个function,结果就自动触发了。
control + C 可以关闭程序的运行,装上bootstrap后再运行 npm run start
自问自答,优秀
在 B 站,作者有公开这个信息
其实是可以的,可以以 state = { a: xxx } 的形式放在constructor外面
老师创建的项目中 react 版本是 16.4.1。
我按照老师讲解的命令创建出来的和你发出来一样。查看 react 版本是 17.0.2 。
代码结构应该是和 react 的版本有关。
确认是否导入:import ThemeContext from './theme-context'
meiyou
在index.js 绑定的是哪个,就是加载显示的那个组件
react组件jsx, 行内style固定写法就是双花括号
①外层花括号:因为React使用的是JSX语法,JSX语法中嵌入任何js变量、表达式、对象都要用花括号{}扩起来,
②内层花括号:JSX如果用到行内CSS style样式时,这个行内样式必须是一个js对象,即{background:'theme.background'}是一个对象所以用花括号扩起来。
你那个错误写法一运行就报错
老师很多都是跟官网一样的,官网有代码。
出现问题,报错可以贴出来
每次state数据更新,都会重新走render方法重新渲染,然后通过diff算法只更新有数据更新的地方。
npm install bootstrap --save
就是直接返回括号里面的内容
最新的写法是函数式组件也就是hooks。这篇文章详细说明了函数组件和class组件的区别,也是react官方推荐的一篇文章。
https://overreacted.io/zh-hans/how-are-function-components-different-from-classes/