React在实际开发中Variables与Prop的实战运用

简介: React在实际开发中Variables与Prop的实战运用

@[toc]
在这里插入图片描述

Variables

所见,<img/>标记的SRC属性值是{logo}放在大括号中,这就是JSX识别变量的方式。

<img src={logo} className="App-logo" alt="logo" />

React将识别{logo},并知道在我们应用程序的第二行中介绍的徽标。然后react将读取此文件并渲染它。让我们尝试设置自己的变量。
在应用程序返回之前,添加const subject='react';
代码现在应该如下所示:

function App() {
  const subject = "React";
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />

将第8行中的“world”替换为我们自己的变量subject
保存时,浏览器将显示“你好,反应!”,不是“你好,世界!”
变量非常方便,但我们不利用react。

Prop

Prop是传递到react组件中的任何数据。Props写在组件中,并像HTML属性一样写为prop=“value”。让我们打开index.JS并为<app/>添加第一个属性。

ReactDOM.render(<App subject="Clarice" />, document.getElementById('root'));

在<app/>组件中添加一个名为subject的属性,该属性具有Clarice值。
回到 App.js:

function App() {
  const subject = "React";
  return (
  );
}

更改应用程序的函数签名,使其接收props作为参数。
与其他参数一样,可以将props放在控制台日志()中,并将其打印在浏览器中。
把它放在你的主题之后,然后再回来。

function App(props) {
  const subject = "React";
  console.log(props);

对象的subject属性对应于我们放入app函数签名中的prop,Clarice字符串对应于它的值。react中的组件属性总是以这种方式传递到对象中。

function App(props) {
  const subject = props.subject;
  return (

现在,主题是我们的道具之一,让我们转到app.JS。使用props主题替换原始的react字符串。如果需要,还可以删除控制台日志。

生命周期

生命周期助于了解组件的运行模式,完成更复杂的组件功能,并分析组件错误的原因
生命周期:组件从创建到安装并在页面上运行,然后在组件不使用时卸载的过程

发送AJAX请求,获取远程数据。处理this绑定问题

class App extends React.Component {
    constructor() {
        super()

        // 初始化state
        this.state = {
            count: 0
        }
        // 

        // const title = document.getElementById('title')
        // 此时DOM还没渲染,拿不到DOM
        // console.log(title) 结果:null
        console.warn('生命周期钩子函数: 1.constructor')
    }

    componentDidMount() {
        // const title = document.getElementById('title')
        // 1.此时已经完成DOM渲染,可以拿到DOM,进行DOM操作
        // console.log(title)

        // 2.
        // axios.get('http://api....')
        
        console.warn('生命周期钩子函数: 3.componentDidMount')
    }

React支持自定义错误边界组件以捕获具有渲染错误的子组件。
如果在react组件中定义了两个生命周期方法static getderivedstatefromerror()或componentdidcatch()中的任何一个(或两个),它将成为错误边界。当抛出错误时,您可以在getderivedstatefromerror()端更改状态变量,以控制备用UI的呈现,并在componentdidcatch()方法中打印错误信息。

var HelloMessage = React.createClass({
  render: function() {
    return <h1>Hello {this.props.name}</h1>;
  }
});

渲染时,将重新生成虚拟DOM,但在重新渲染UI时,react将仅重新渲染虚拟DOM的更改部分。渲染后,虚拟DOM中输入的值属性值实际上会发生变化,但与不同。输入在实际DOM中的值,因此它不会呈现到UI。

var HelloMessage = React.createClass({
  render: function() {
    return <h1>
      Hello {this.props.name}
    </h1><p>
      some text
    </p>;
  }
});

另外,可以将ref=“mytextinput”添加到输入和添加控制台。登录handlechange(this.Refs[“mytextinput”].Props);打印虚拟DOM的属性值以发现秘密。

DOM节点

组件不是真正的DOM节点,而是内存中存在的数据结构,称为虚拟DOM。只有当它被插入到文档中时,它才会成为真正的dom。根据react的设计,所有DOM更改将首先发生在虚拟DOM上,然后实际更改将反映在真实DOM上。这种算法称为DOM-diff,它可以极大地提高网页的性能。

var names = ['Alice', 'Emily', 'Kate'];
ReactDOM.render(
  <div>
    {
      nemes.map(function(name) {
        return <div>Hello, {name}!</div>
      })
    }
  </div>,
  document.getElementById('example')
)

React为每个状态提供两个处理功能。在进入状态之前调用will函数,在进入状态之后调用did函数。三种状态下有五种处理功能。

   -   componentWillMount()
   -   componentDidMount()
   -   componentWillUpdate(object, nextProps, object nextState)
   -   componentDidUpdate(object, prevProps, object prevState)
   -   componentWillUnmount()

Mounting:已插入真实DOM
Updating:正在被重新渲染
Unmounting:已移出真实DOM

state和render

状态属性包含定义组件所需的一些数据。当数据更改时,将调用render来再现渲染。只能通过setstate方法更新数据。

相关文章
|
4天前
|
设计模式 存储 前端开发
React开发设计模式及原则概念问题之自定义Hooks的作用是什么,自定义Hooks设计时要遵循什么原则呢
React开发设计模式及原则概念问题之自定义Hooks的作用是什么,自定义Hooks设计时要遵循什么原则呢
|
1月前
|
前端开发 JavaScript 安全
TypeScript在React Hooks中的应用:提升React开发的类型安全与可维护性
【7月更文挑战第17天】TypeScript在React Hooks中的应用极大地提升了React应用的类型安全性和可维护性。通过为状态、依赖项和自定义Hooks指定明确的类型,开发者可以编写更加健壮、易于理解和维护的代码。随着React和TypeScript的不断发展,结合两者的优势将成为构建现代Web应用的标准做法。
|
3月前
|
前端开发 JavaScript 程序员
开发语言漫谈-React
React同Vue一样,都是基于Javascript上的框架,不是独立语言
|
7天前
|
移动开发 前端开发 JavaScript
"跨界大战!React Native、Weex、Flutter:三大混合开发王者正面交锋,揭秘谁才是你移动应用开发的终极利器?"
【8月更文挑战第12天】随着移动应用开发的需求日益增长,高效构建跨平台应用成为关键。React Native、Weex与Flutter作为主流混合开发框架各具特色。React Native依托Facebook的强大支持,以接近原生的性能和丰富的组件库著称;Weex由阿里巴巴开发,性能优越尤其在大数据处理上表现突出;Flutter则凭借Google的支持及独特的Dart语言和Skia渲染引擎,提供出色的定制能力和开发效率。选择时需考量项目特性、团队技能及生态系统的成熟度。希望本文对比能助你做出最佳决策。
28 1
|
7天前
|
前端开发
React——开发调式工具安装【五】
React——开发调式工具安装【五】
12 0
React——开发调式工具安装【五】
|
4天前
|
设计模式 前端开发 JavaScript
React开发设计模式及原则概念问题之什么是HOC(Higher-order component),HOC遵循的设计原则都有哪些
React开发设计模式及原则概念问题之什么是HOC(Higher-order component),HOC遵循的设计原则都有哪些
|
4天前
|
设计模式 前端开发 JavaScript
React开发设计模式及原则概念问题之什么是设计模式,单一职责原则如何理解
React开发设计模式及原则概念问题之什么是设计模式,单一职责原则如何理解
|
1月前
|
前端开发
React Hooks实战技巧:提升你的组件开发效率
【7月更文挑战第16天】React Hooks为React开发带来了革命性的变化,使得函数式组件更加强大和灵活。通过掌握上述实战技巧,你可以更高效地编写清晰、可维护和可复用的React组件。希望这些技巧能帮助你在React开发之路上走得更远。
|
29天前
|
前端开发 JavaScript Android开发
React Native跨平台开发实战
【7月更文挑战第21天】React Native为跨平台移动应用开发提供了一种高效且强大的解决方案。通过本文的学习,你应该能够掌握React Native的基本概念和实战步骤,并开始在你的项目中使用React Native进行开发。随着你对React Native的深入理解,你将能够利用其强大的功能来构建更加复杂和高效的移动应用。
|
1月前
|
存储 前端开发 JavaScript
深入浅出React框架:构建高效组件化网页的实战指南
【7月更文挑战第9天】在当今快速发展的前端技术领域,React凭借其强大的组件化思想、高效的虚拟DOM以及丰富的生态系统,成为了构建动态用户界面的首选框架之一。本文将带你深入浅出地探索React的核心概念,并通过实战示例,展示如何利用React构建高效、可维护的组件化网页。
65 8

热门文章

最新文章