前端-【学习心得】-react3 响应状态

目前为止,每一个组件渲染数据的时候使用props,props作为组件内部属性是不可以改变的,因为props是从父组件传递过来,并被父组件所拥有。而子组件实际上是依赖父组件的环境中得到这个props。

下面介绍可以改变的属性state,用来实现组件的交互,这个属性对组件自身来说是私有的,可以通过this.setState()来改变,一旦这个属性改变后,组件会自动重新渲染。

state理解为传递数据的内部属性,用来向render传递数据。

当从服务器上抓取数据后,我们会改变接口中的数据。在此可以先定义一个data的数组作为state的初始化参数。

// tutorial12.js

var CommentBox = React.createClass({

getInitialState: function() {      return {data: []};      },      render: function() {

return ( <div className="commentBox"> <h1>Comments</h1>      <CommentList data={this.state.data} />      <CommentForm /> </div> );

}

});

初始化状态的时候拿到数据,并作为state的属性,在render的时候调用state的该属性

// tutorial13.js

var CommentBox = React.createClass(

{ getInitialState: function() { return {data: []}; },     componentDidMount: function() {           $.ajax({            url: this.props.url,            dataType: ‘json‘,           success: function(data) {           this.setState({data: data});           }.bind(this),           error: function(xhr, status, err) {            console.error(this.props.url, status, err.toString());      }.bind(this)      });      }, render: function() {

return ( <div className="commentBox"> <h1>Comments</h1> <CommentList data={this.state.data} /> <CommentForm /> </div> ); }

});

当组件第一次被创建的时候,我们希望从服务器GET一些json数据,然后更新state。这样数据渲染就会被立刻更新了。

接下来我们先顶一个一个静态的json文件放在服务器上,内容如下:

tutorial13.json

[ {"author": "Pete Hunt", "text": "This is one comment"}, {"author": "Jordan Walke", "text": "This is *another* comment"}]

然后我们用熟悉的jquery 获取这些数据

// tutorial13.jsvar CommentBox = React.createClass({ getInitialState: function() { return {data: []}; }, componentDidMount: function() {     $.ajax({     url: this.props.url,     dataType: ‘json‘,     success: function(data) {     this.setState({data: data});     }.bind(this),     error: function(xhr, status, err) {     console.error(this.props.url, status, err.toString());     }.bind(this)     });}, render: function() {

return (

<div className="commentBox">

<h1>Comments</h1>

<CommentList data={this.state.data} />

<CommentForm />

</div> );

}});

在这里componentDidMount方法会在react渲染的时候自动调用然后更新state里的data,一旦state改变,react渲染也开始改变,旧的数据就被更新了。这里可以考虑使用websocket,不需要自己写渲染dom的部分,数据更新后自动就渲染了。这个倒是挺方便。

// tutorial14.js

var CommentBox = React.createClass({      loadCommentsFromServer: function() {           $.ajax(

{

url: this.props.url,

dataType: ‘json‘,

success: function(data) {

this.setState({data: data}); }.bind(this),

error: function(xhr, status, err) { console.error(this.props.url, status, err.toString()); }.bind(this) }); },

getInitialState: function() { return {data: []}; },

componentDidMount: function() {                          this.loadCommentsFromServer();                          setInterval(this.loadCommentsFromServer, this.props.pollInterval);                },

getInitialState: function() { return {data: []}; }, componentDidMount: function() {

this.loadCommentsFromServer();           setInterval(this.loadCommentsFromServer, this.props.pollInterval);       },

render: function() {

return (

<div className="commentBox">

<h1>Comments</h1>

<CommentList data={this.state.data} /> <CommentForm />

</div> ); }

});

React.render(           <CommentBox url="comments.json" pollInterval={2000} />,           document.getElementById(‘content‘));

每隔两分钟访问后台获取数据,这个可以作为数据展示的实现。

可以考虑后台定时更新数据后写入记录文件,界面访问记录文件即可,无需在为之创建后台调用数据库之类的。

时间: 2024-08-01 21:10:45

前端-【学习心得】-react3 响应状态的相关文章

小小六的前端学习心得

打算写这篇文章已经好久了,但是文采不行,不知道如何下笔,今天终于鼓起勇气用我拙劣的作文水平来讲述一下这段时间我学习前端开发的心得. 先从我的专业说起.我本人是学计算机的.全名是叫计算机科学与技术(软件方向),学校虽然是一个211学校,学习成绩也还行,但是对于编程这一块,真的是很弱很弱.所以我对计算机编程真正的学习是从实习这段时间开始的.说到这里,我必须得感谢带我进入前端的学长.因为他我才能在今天坐在这里写这篇学习心得. 所以,首先最好是有一个愿意耐心的指导你学习的人,也就是一个好的师傅.他能根据

web前端学习心得

所谓行万里路,必先始于足下.刚开始学习WEB前端基础的时候,老师说,其实你们学的这个后面真正去工作的时候可能也不是很会用到,所以就有很多人会问,既然我们都用不到,那干嘛还学呀?其实,对于一个程序员来说,你不仅要有很好的后端专业能力,你还应当具备一定的前端素养,知道一些起码的前端知识. 来到传智的第一个月,我们是以基础为主吧,因为大家到这里的基础都不一样,有一些本身就具备很高水准的人,也有很多像自己一样从小白开始的人,所以,对我们而言,传智开设的这种双元模式对我们是有很大用处的.我们从最基础的开始

前端 http协议 四大特性 web本质 -响应状态码 列表标签 表单操作 form表单 # 44

1.前端简介 1 """""" 2 """前端:""" 3 """和python没有任何关系""" 4 5 1.什么是前端? 6 任何与用户直接打交道的操作界面都可以称之为前端 7 比如 : 电脑界面 手机界面 平板界面 8 9 2.什么是后端? 10 暂时先理解成,幕后操作者 11 不直接与用户打交道 12 13 3.为什么要

Web前端培训学习心得

web前端工程师技术日趋成熟,越来越多的行业巨头正不断向web前端工程师示好,在未来几年,web前端将会以更多的形式渗透到我们生活中的方方面面,因此越来越多的从业者开始关注web前端开发行业,今天小编跟大家共同来分享一下自己的web前端工程师学习心得. 今天只是想要跟大家分享一下学习心得,在选择web前端工程师培训之前,我逃避过.犹豫过.迷茫过,站在人生的十字路口,不知道该何去何从,但从加入培训班的那刻起,就把心中的疑问打消了,看到大家倾吐自己的心声,我开始认识到每个人都渴望成功,更希望能够战胜

我的MYSQL学习心得(十六)

我的MYSQL学习心得(十六) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 我的MYSQL学习心得(八) 我的MYSQL学习心得(九) 我的MYSQL学习心得(十) 我的MYSQL学习心得(十一) 我的MYSQL学习心得(十二) 我的MYSQL学习心得(十三) 我的MYSQL学习心得(十四) 我的MYSQL学习心得(十五) 一步一步

我对大数据相关技术的学习心得及理解

本篇为这一段时间以来我对大数据相关技术的学习心得及理解,主要涉及以下几个方面: noSql, 集群, 数据挖掘, 机器学习,云计算,大数据,以及Hadoop和Spark.主要都是一些初级的概念澄清之类的东西,并且比较凌乱,慎入.* 1. NoSQL我的理解是,NoSQL主要用于存储一些非结构化数据, 是关系数据库与文件存储方式(比如视频文件就适合使用文件的方式存储)的过度. ** 1.1 NoSQL的分类: 列存储: Hbase(BigTable的开源实现),可存储结构化数据. Cassandr

好程序员web前端学习路线分享了解AJAX是什么

好程序员web前端学习路线分享了解AJAX是什么首先是服务器 什么是服务器:咱们的页面来源于服务器:实例(在phpnwo上面存放一个页面), 咱们把页面放在互联网的服务器上,就有了自己的网站了. 1.异步同步 生活中的同步: 生活中的异步: 在JavaScript语言中,同步和异步的概念刚好相反. 这JavaScript中同步就是:你不执行完上面的代码,那么下面的代码你就别执行:一步一步执行,这就是同步. 异步就是可以一块执行的代码: 进程的概念 进程≠程序 程序从开始到结束的一次执行过程叫做进

2020年前端学习体系与前端概述

前端学习目标 基础课程:HTML + CSS javaScript DOM BOM AJAX HTML5 + CSS3 应用课程:jQuery easyUI 移动端开发 响应式开发 PHP基础 H5UI bootstrap less/stylus 模板引擎 swiper iscroll select2 工程课程:ES5/6/7 git&GitHub nodeJS mongoDB mySQL webpack gulp babel VUE 微信小程序 REACT 学习前端所需要用到的工具 欲善其事必

Linux系统理解以及Linux系统学习心得

原创作品转载请注明出处  <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 作者:严哲璟 说一下我对Linux系统的理解 1.加载Linux内核准备:在加载基本输入输出模块(BIOS)之后,从磁盘的引导扇区读入操作系统的代码文件块到内存中,之后开始整个系统的初始化. 2.main.c的start_kernel函数是整个操作系统的入口,这也与Linux是基于C语言的特性相符,start_kernel具体做的动作很多