问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

render和redirect的区别是什么?

发布网友 发布时间:2022-04-29 02:19

我来回答

2个回答

懂视网 时间:2022-04-23 07:00

这次给大家带来操作render执行有哪些方法,操作render执行的注意事项有哪些,下面就是实战案例,一起来看一下。

我们都知道Render在组件实例化和存在期时都会被执行。实例化在componentWillMount执行完成后就会被执行,这个没什么好说的。在这里我们主要分析存在期组件更新时的执行。

存在期的方法包含:

  1. - componentWillReceiveProps

  2. - shouldComponentUpdate

  3. - componentWillUpdate

  4. - render

  5. - componentDidUpdate

这些方法会在组件的状态或者属性发生发生变化时被执行,如果我们使用了Redux,那么就只有当属性发生变化时被执行。下面我们将从几个场景来分析属性的变化。

首先我们创建了HelloWorldComponent,代码如下所示:

import * as React from "react";
class HelloWorldComponent extends React.Component {
 constructor(props) {
 super(props);
 }
 componentWillReceiveProps(nextProps) {
 console.log('hello world componentWillReceiveProps');
 }
 render() {
 console.log('hello world render');
 const { onClick, text } = this.props;
 return (
 <button onClick={onClick}>
 {text}
 </button>
 );
 }
}
HelloWorldComponent.propTypes = {
 onClick: React.PropTypes.func,
};
export default HelloWorldComponent;

AppComponent组件的代码如下:

class MyApp extends React.Component {
 constructor(props) {
 super(props);
 this.onClick = this.onClick.bind(this);
 }
 onClick() {
 console.log('button click');
 this.props.addNumber();
 }
 render() {
 return (
 <HelloWorld onClick={this.onClick} text="test"></HelloWorld>
 )
 }
}
const mapStateToProps = (state) => {
 return { count: state.count }
};
const mapDispatchToProps = {
 addNumber
};
export default connect(mapStateToProps, mapDispatchToProps)(MyApp);

这里我们使用了Redux,但是代码就不贴出来了,其中addNumber方法会每次点击时将count加1。

这个时候当我们点击button时,你觉得子组HelloWorldComponent的render方法会被执行吗?

如图所示,当我们点击button时,子组件的render方法被执行了。可是从代码来看,组件绑定的onClick和text都没有发生改变啊,为何组件会更新呢?

如果在子组件的componentWillReceiveProps添加这个log:console.log(‘isEqual', nextProps === this.props); 输出会是true还是false呢?

是的,你没有看错,输出的是false。这也是为什么子组件会更新了,因为属性值发生了变化,并不是说我们绑定在组件上的属性值。每次点击button时会触发state发生变化,进而整个组件重新render了,但这并不是我们想要的,因为这不必要的渲染会极其影响我们应用的性能。

在react中除了继承Component创建组件之外,还有个PureComponent。通过该组件就可以避免这种情况。下面我们对代码做点修改再来看效果。修改如下:

class HelloWorldComponent extends React.PureComponent

这次在点击button时发生了什么呢?


  

虽然componentWillReceiveProps依然会执行,但是这次组件没有重新render。

所以,我们对于无状态组件,我们应该尽量使用PureComponent,需要注意的是PureComponent只关注属性值,也就意味着对象和数组发生了变化是不会触发render的。

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

右侧带索引通讯录实现(附代码)

vue-ssr静态网站生成器VuePress使用详解

热心网友 时间:2022-04-23 04:08

rails中的redirect 和 render区别

Rails里

1. render 和 redirect 只能用一个

2. render 可以翻译成提交,一般的电脑语言翻译成渲染,Rails里render可以自动方式和手动两种

3. 动作控制器通过render方法发送内容给用户,大多数都是提交一个“模板”。视图可以看懂erb的模板,显示出@变量(实例变量)----这种render提交和渲染(把模板呈现为用户看到的视图)过程是自动的,不用你命令render去执行

简单说就是controller中方法里定义的@foo变量,view中rhtml可以用<%=@foo%>显示出来

4. 动作”的结果是提交不同的“模板”时,手工使用render方法追问那在jfinal中这两种的用法是不是也是一样的?你这里只是对render进行了一些说明,是不是render和redirect用法相同?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 render 意思为什么 Render 是什么意思 Render是什么意思,它是作什么用的 ps中的render是什么意思 render是什么意思 陈情悠悠裂苍穹是什么歌? OPPO A37m怎样将网易云音乐的默认歌曲下载目录改到TF卡的特定文件夹? 电脑m4a的文件怎么不能默认用网易云打开 荣耀YOYO智能音箱 说一百遍都不会听的话 再说就是犯贱怎么回复? 一句“对不起”背叛了多少句“我爱你”,一句“我爱你”说了多少遍,又换了多少人? 求一个比 对不起 更有力度的道歉词,对董芳说100遍… 如何用YOYO网易云播放个人喜欢 给女朋友的检讨书、、急急急 MacBook+Air怎么办网易云设置成默认播放音乐- 问一问 挽回感情 这个个性签名的情侣签名是什么啊 iphone怎么把网易云音乐设成默认播放器 请问一般公交车每一站一般是多少米? 周星驰有一句经典的话,叫什么? 计算机中所说的「渲染」是什么意思? 渲染的意思是什么? 这里的render是什么意思? render 意思 电脑打开后,桌面不见了怎么办? 谁有下载MP4电影的网站啊? MP4电影下载网站那个有? 谁有MP4格式的电影网站 谁有下载MP4电影的网址啊?? qq空间评论中的红包图片怎么弄?, 微信里要发红包才能看照片是怎么弄的 亲!如下图,这个微信红包,为什么底部是这样的?(怎么弄的)谢谢了 为什么新鲜牛奶喝过后,嘴巴里有种臭鸡蛋的味道 嘴巴里有臭咸鸭蛋的味道? 为什么我年纪不大,一笑起来就会有一些皱纹了呢?有什么好的去皱纹的护肤品吗? 为什么口腔有异味 为什么笑起来有皱纹,才二十岁呢 净水器过滤后的水喝到嘴里有臭鸡蛋味儿,为什么&#xFEFF; &#39;梦见大姑子找事让我和丈夫离婚 七大姑介绍对象好吗?为什么不给我介绍?有对不给我介绍?