React 属性和状态具体解释

属性的含义和使用方法

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

执行结果例如以下:

时间: 2024-08-07 13:40:34

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

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

属性的含义和用法: 1.属性的含义. props=properties 属性:一个事物的性质和关系. 属性往往与生俱来,不可以修改. 2. 属性的用法. <Helloworld name=??? /> 这个name 可以是 变量 ,对象,数组,函数表达式的值. var props={ a:1, b:2 } <Helloworld {...props} /> 这样react就会自动遍历props对象并添加到属性中去. 状态的含义和用法: 1.状态的含义. state 状态:事物所处的

react 属性与状态 学习笔记

知识点:1.react 属性的调用 this.props.被调用的属性名 设置属性的常用方法:var props = { one: '123', two: 321}调用这个属性:<HelloWorld {...props} /> 说明:{...props},这里的三个点,代表props中的所有的属性 react 状态的调用 this.state this.getInitialState 默认状态的方法:this.setState 修改状态的方法(经常用到) this.setState.被修改的

React属性和状态对比

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

如何实现 React 中的状态自动保存?

什么是状态保存? 假设有下述场景: 移动端中,用户访问了一个列表页,上拉浏览列表页的过程中,随着滚动高度逐渐增加,数据也将采用触底分页加载的形式逐步增加,列表页浏览到某个位置,用户看到了感兴趣的项目,点击查看其详情,进入详情页,从详情页退回列表页时,需要停留在离开列表页时的浏览位置上 类似的数据或场景还有已填写但未提交的表单.管理系统中可切换和可关闭的功能标签等,这类数据随着用户交互逐渐变化或增长,这里理解为状态,在交互过程中,因为某些原因需要临时离开交互场景,则需要对状态进行保存 在 Reac

React: React的组件状态机制

一.简介 在React中,有两个核心的默认属性,分别是state和props.state会记录组件的状态,React根据状态的变化,会对界面做相应的调整或渲染.props则是数据流向属性,React通过props传递来实现父子组件之间的通信.本篇主要研究React的组件状态机制,在很多Web界面可以看到数据不停的变化,其实,这个过程就是React监听到state状态在不停地发生改变时一次次重新对组件重新渲染的结果.基于React这个机制,所以开发者可以很灵活地用state来完成对行为的控制.数据

Navicat for SQL Server 高级属性(状态)

Navicat for SQL Server可进行创建.编辑和删除全部数据库对象, 是一个全面的图形化方式管理数据库.但是很多的用户朋友对其了解的不够,我们来给大家做些教程讲解.本教程将详解 Navicat for SQL Server 高级属性(状态). Navicat for SQL Server 数据库只读:勾选此项,用户可以从数据库读取数据,但不能修改. 数据库状态:可选择的数据库状态. ● OFFLINE:数据库已关闭并标记为脱机.数据库脱机时,不能进行修改. ● ONLINE:该数据

【原创】XAF属性通过状态来隐藏字段模型内容

XAF属性通过状态来隐藏字段内容: [Appearance("", Criteria = "FOperationtype=1", Visibility = DevExpress.ExpressApp.Editors.ViewItemVisibility.Hide)] 原文地址:https://www.cnblogs.com/qy1234/p/12670233.html

【react】React学习:状态(State) 和 属性(Props)

React :元素构成组件,组件又构成应用.React核心思想是组件化,其中 组件 通过属性(props) 和 状态(state)传递数据. State 与 Props 区别props 是组件对外的接口,state 是组件对内的接口.组件内可以引用其他组件,组件之间的引用形成了一个树状结构(组件树),如果下层组件需要使用上层组件的数据或方法,上层组件就可以通过下层组件的props属性进行传递,因此props是组件对外的接口.组件除了使用上层组件传递的数据外,自身也可能需要维护管理数据,这就是组件

混合开发的大趋势之一React Native State (状态),Style(样式)

转载请注明出处:王亟亟的大牛之路 先安利:https://github.com/ddwhan0123/Useful-Open-Source-Android 今天又加了几个疑难杂症哦!! 上一篇讲了属性,这一篇主要讲 State Style,给出上次的传送门,以便有更好的连贯性:http://blog.csdn.net/ddwhan0123/article/details/52238478 State 状态 在RN中用来描述对象的除了属性Props还有状态State,那么状态又是个什么东西呢? T