props, state 与render函数

本文深入探讨了React中组件状态(state)和属性(props)变化时组件重新渲染的机制。揭示了当父组件重新渲染时,其所有子组件也会随之重新渲染的过程。

在React 中,当组件的state 或者props 发生改变的时候,render函数就会重新执行。

当父组件的render 函数被运行时,它的子组件的render 函数都将被重新运行。

### h 函数 Render 函数的区别 #### 在 Vue.js 中: `h` 函数(即 `createVNode` 或者通常简写为 `h`),是 Vue 3 引入的一个函数,用于创建虚拟节点 (Virtual Node)[^1]。此方法允许开发者通过 JavaScript 更加灵活地构建模板,而不是依赖于字符串模版。 ```javascript const vnode = h('div', { class: 'example' }, 'Hello World'); ``` 相比之下,在 Vue 组件内部定义的 `render` 函数则用来描述如何基于组件的状态和属性来生成最终的 VNodes 结构。这意味着 `render` 函数负责整个组件树的渲染逻辑,而不仅仅是单个节点。 ```javascript export default { name: "ExampleComponent", render(h) { return h( "div", { class: ["container"] }, this.items.map(item => h("p", null, item)) ); } } ``` #### 在 React 中: 对于 React 来说,情况有所不同。React 并不显式提供名为 `h` 的辅助函数;相反,JSX 被编译成类似于 `React.createElement()` 的调用,这实际上扮演着类似的角色——创建元素对象以便后续可以被转换为真实的 DOM 元素或服务器端 HTML 字符串[^2]。 ```jsx // JSX 编写的代码会被转译器转化为这样的形式 const element = React.createElement('div', {className: 'greeting'}, 'Hello world'); ``` 而在类组件中实现的 `render` 方法或是函数式组件本身,则是用来指定 UI 输出的具体方式。它们接收 propsstate 参数并返回所要呈现的内容作为响应。 ```jsx class Welcome extends React.Component { render() { return <h1>Hello, {this.props.name}</h1>; } } function Welcome(props) { return <h1>Hello, {props.name}</h1>; } ``` 因此,在这两个框架里,“`h`”代表了一种更底层的操作,主要用于手动构造虚拟DOM节点,而 “`render`” 则更多关联到了更高层次的应用场景下整体页面布局以及动态内容展示的方式上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值