
2025-04-27 日报 Day169

今日的鸡汤
铭记誓词、以行践诺。
今日学习内容
1、https://www.youtube.com/watch?v=EVFZazcxAbo
今日笔记
1、JSX的本质:
- JSX是JavaScript的语法扩展,允许在JavaScript代码中直接编写类似HTML的标签。
- 在编译(Babel)时,JSX会被转换为React.createElement()调用,这些调用创建了React元素。
- JSX使得组件的结构更直观,易于理解和维护。
JSX语法躺允许前端开发者使用最为熟悉的类HTML标签语法来创建虚拟DOM,在降低学习成本的同时,也提升了研发效率和体验。
USING React Without JSX:
For example, this code written with JSX:can be rewritten without JSX like this:1
2
3
4
5
6
7
8class Hello extends React.Component {
render() {
return <div>Hello {this.props.toWhat}</div>;
}
}
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<Hello toWhat="World" />);1
2
3
4
5
6
7
8class Hello extends React.Component {
render() {
return React.createElement('div', null, `Hello ${this.props.toWhat}`);
}
}
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(React.createElement(Hello, {toWhat: 'World'}, null));
2、createELement源码解析:
https://legacy.reactjs.org/docs/react-api.html#createelement
https://react.dev/reference/react/createElement
1 | export function createElement(type, config, children) { |
CreateElement只是ReactElement的一个包装函数,主要用于处理JSX语法的转换和一些额外的属性处理。
3、ReactElement源码解析:
1 | function ReactElement( |
4、虚拟DOM:
1 | const AppJSX = (<div className='App'> |
虚拟DOM => 真实DOM 由ReactDOM.render()方法完成
5、ReactDOM.render()源码解析:
https://github.com/facebook/react/blob/v18.2.0/packages/react-dom/src/client/ReactDOMLegacy.js
1 | export function render( |