属性的含义和使用方法

props=properties

属性:一个事物的性质与关系

属性往往是与生俱来的、无法自己改变的.

属性的使用方法:

第一种方法:键值对



1、传入一个字符串:”Hi”(字符串)/{“Hi”};

2、传入一个数组{[arry]};

3、传入一个变量{variable}

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Keywords" content="关键词一。关键词二">
<meta name="Description" content="站点描写叙述内容">
<meta name="Author" content="刘艳">
<title></title>
</head>
<body>
<div id = "example"></div>
</body>
</html>
<script src="build/react.js"></script>
<script src="build/react-dom.js"></script>
<script src="build/browser.min.js"></script>
<script type="text/babel">
var HelloWorld = React.createClass({
render: function () {
return <p>Hello, {this.props.name ? this.props.name : "World"}</p>;
}
});
var HelloUniverse = React.createClass({
getInitialState: function () {
return {name: ""};
},
handleChange: function (event) {
this.setState({name: event.target.value});
},
render: function () {
return(
<div>
<HelloWorld name = {this.state.name}></HelloWorld>
<input type = "text" onChange = {this.handleChange}/>
</div>
)
}
});
ReactDOM.render(<HelloUniverse></HelloUniverse>, document.querySelector("#example"));
</script>

执行结果例如以下。使用的是键值对的方式

另外一种方法:能够理解为展开

var props = {one:”hello”, two:”message”}

React提供展开语法…,使用…加对象,react就会把对象中的属性和值。当成是属性的赋值:

<body>
<div id = "example"></div>
</body>
</html>
<script src="build/react.js"></script>
<script src="build/react-dom.js"></script>
<script src="build/browser.min.js"></script>
<script type="text/babel">
var HelloWorld = React.createClass({
render: function () {
return <p>Hello, {this.props.name + " " + this.props.age}</p>;
}
});
var HelloUniverse = React.createClass({
getInitialState: function () {
return {name: "Yvette", age: "25"};
},
handleChange: function (event) {
this.setState({name: event.target.value});
},
render: function () {
return(
<div>
<HelloWorld {...this.state}></HelloWorld>
<input type = "text" onChange = {this.handleChange}/>
</div>
)
}
});
ReactDOM.render(<HelloUniverse></HelloUniverse>, document.querySelector("#example"));
</script>

执行结果例如以下。使用{…this.state}展开

第三种方法:调用react提供的setProps函数

setProps接收的參数是一个对象。可是react不推荐改变组件的属性,能够通过父组件向子组件传入的方式。

<body>
<div id = "example"></div>
</body>
</html>
<script src="build/react.js"></script>
<script src="build/react-dom.js"></script>
<script src="build/browser.min.js"></script>
<script type="text/babel">
var HelloWorld = React.createClass({
render: function(){
return <p>Hello, {this.props.name}</p>
}
});
var instance = ReactDOM.render(<HelloWorld></HelloWorld>, document.querySelector("#example"));
instance.setProps({name: "William"});
</script>

使用setProps改动属性值,此种方式不推荐,假设须要改变属性值。能够參考第一个样例,利用父组件去改动。

状态的含义和使用方法

state

状态:事物所处的状况。

状态是由事物自行处理、不断变化的。

状态是事物的私有属性。

状态的使用方法

getInitialState:初始化每一个实例特有的状态

setState:更新组件状态

使用setState——启用diff算法——有变化,更新DOM

属性和状态的对照

属性和状态的类似点

1、都是纯JS对象

2、都会触发render更新

3、都具有确定性

状态仅仅和组件本身相关。组件不能改动属性

组件在执行时须要改动的数据就是状态。

属性和状态的实例

编写一个简单的文章评论框

第一步:分析构成项目的组件

第二步:分析徐俊的关系和数据传递

第三步:编写代码

第一步:分析构成项目的组件

评论框

内容

第二步:分析徐俊的关系和数据传递

评论框是内容的父组件

父组件须要传递评论对象子组件,评论对象是内容组件的属性,评论内容是内容组件的状态。

1、select,option是写死的

2、option的内容应该是动态的,将option的内容作为状态提取出来

利用属性和状态实现一个评论框:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Keywords" content="关键词一,关键词二">
<meta name="Description" content="站点描写叙述内容">
<meta name="Author" content="刘艳">
<title>评论框</title>
</head>
<body>
<div id = "example"></div>
</body>
</html>
<!--将option提取出来作为父组件的状态-->
<!--将评论对象(selectName)传递给子组件-->
<!--改动子组件,构建回复内容-->
<!--监听内容的变化。并将变化记录在状态中-->
<script src="build/react.js"></script>
<script src="build/react-dom.js"></script>
<script src="build/browser.min.js"></script>
<script type="text/babel">
var style = {
width:300 + 'px',
height:150 + 'px',
marginTop:20+'px',
marginBottom:20+'px',
resize: 'none',
textIndent:10 + 'px'
};
var Content = React.createClass({
getInitialState: function (){
return{ inputText: ""
};
},
handleChange: function(event){
this.setState({inputText:event.target.value})
},
handleSubmit: function () {
console.log("reply to: " + this.props.selectName + "\n" + this.state.inputText);
},
render: function () {
return (<div>
<textarea style = {style} onChange = {this.handleChange} placeholder = "please enter something..." ></textarea>
<br/>
<button onClick = {this.handleSubmit}>submit</button>
</div>);
}
});
var Comment = React.createClass({
getInitialState: function () {
return{
names: ["William", "Yvette", "Katharine"],
selectName: ""
};
},
handleChange: function (event) {
this.setState({selectName:event.target.value})
},
render: function () {
var options = [];
for(var option in this.state.names){
options.push(<option value = {this.state.names[option]}> {this.state.names[option]} </option>)
};
return (
<div>
<select onChange = {this.handleChange}>
{options}
</select>
<Content selectName = {this.state.selectName}></Content> </div>);
}
});
ReactDOM.render(<Comment></Comment>, document.querySelector("#example"));
</script>

须要注意的是。React中,style不能直接写300px,须要使用拼接,另外margin-top等也须要使用驼峰命名法,写成marginTop

执行结果例如以下:

React 属性和状态具体解释的更多相关文章

  1. react 属性与状态 学习笔记

    知识点:1.react 属性的调用 this.props.被调用的属性名 设置属性的常用方法:var props = { one: '123', two: 321}调用这个属性:<HelloWo ...

  2. react.js 从零开始(四)React 属性和状态详解

    属性的含义和用法: 1.属性的含义. props=properties 属性:一个事物的性质和关系. 属性往往与生俱来,不可以修改. 2. 属性的用法. <Helloworld name=??? ...

  3. 4. React 属性和状态介绍

            React 中的属性和状态初看之下可以互相替代,但是在 React 的设计哲学中两者有着截然不同的使用方式和使用场景. 属性的含义和用法         props = propert ...

  4. React 属性和状态的一些总结

    一.属性 1.第一种使用方法:键值对 <ClaaNameA name = “Tom” /> <ClaaNameA name = {Tom} /> <ClaaNameA n ...

  5. React属性和状态对比

    一.相似点 二.区别 三.如何区分 PS:所有的数据都可以变成属性

  6. React基础(Diff算法,属性和状态)

    1.React的背景原理 (1)React Diff算法流程 (2)React虚拟DOM机制 React引入了虚拟DOM(Virtual DOM)的机制:在浏览器端用Javascript实现了一套DO ...

  7. 【React】377- 实现 React 中的状态自动保存

    点击上方"前端自习课"关注,学习起来~ 作者:陈俊宇 https://github.com/CJY0208 什么是状态保存? 假设有下述场景: 移动端中,用户访问了一个列表页,上拉 ...

  8. React: React的组件状态机制

    一.简介 在React中,有两个核心的默认属性,分别是state和props.state会记录组件的状态,React根据状态的变化,会对界面做相应的调整或渲染.props则是数据流向属性,React通 ...

  9. Android layer-list的属性和使用具体解释

    Android layer-list的属性和使用具体解释.layer-list是用来多个图层堆叠显示的,借这个特性能够做一些特别的效果(比方:阴影.以下的效果等),也能够投机取巧. 1.代码片 < ...

随机推荐

  1. 实用在线小工具 -- Google URL Shortener

          实用在线小工具 -- Google URL Shortener 当你想分享一些你觉得有趣的东西,但是那个链接太长,以至于贴上去一大片.比如在微博上分享一张图片,然后贴上去图片的链接,url ...

  2. redis配置参数简介

    redis配置查看方式: 1.redis的安装目录查看redis.conf 2.登陆redis客户端,使用 config get xx命令. 比如:查看所有的配置: config get * [roo ...

  3. Android 按钮长按下去重复执行某个动作,放开后停止执行动作

    Android开发中,常遇到一种需求,即按钮长按下去重复执行某个动作,放开后停止执行动作.网上找了许多代码,都没有适合的,于是自己动手写了一个. 基本思路是:首先设置一个标识变量,用于标识是否处于按下 ...

  4. Android 动画——属性动画Property Animation

    Android在3.0之前只提供了两种动画:View Animation .Drawable Animation .也就是我们在<Android 动画——Frame Animation与Twee ...

  5. What is the Linux High Availabi

    What is the Linux High Availabi    简介:     高可用性群集的出现是为了使群集的整体服务尽可能可用,以便考虑计算硬件和软件的易错性.如果高可用性群集中的主节点发生 ...

  6. Jenkins使用jenkins-cli.jar进行远程调用时出现“ERROR: No such job 'test'”或者权限不够等问题解决(Windows)

    网上最提倡的解决办法是用SSH的key进行登录,但是我发觉Linux上非常容易实现,但是Windows压根不知道在哪里设置. 原文:https://issues.jenkins-ci.org/brow ...

  7. 扩展名为的proto的文件

    扩展名为的proto的文件 1. 编写proto文件  首先需要一个proto文件,其中定义了我们程序中需要处理的结构化数据: // Filename: addressbook.proto synta ...

  8. Android调用系统相机、自定义相机、处理大图片

    Android调用系统相机和自定义相机实例 本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显示出来,该例子也会涉及到Android加载大图片时候的处理 ...

  9. springboot2.X整合mybatis

    github地址:https://github.com/BenchChen/springboot 1) 创建springboot-maven项目,并修改pom文件 <?xml version=& ...

  10. nodejs 服务器 崩溃 2种解决办法

    用node启动server后,发现服务器不稳定,经常crash.我是用ssh远程登录的,ssh远程通道中断,或者Ctrl+C,都会使nodejs server崩溃掉. 一,node server 崩溃 ...