马蹄链DAPP合约项目系统开发技术方案丨(源码搭建)

简介: 马蹄链DAPP合约项目系统开发技术方案丨(源码搭建)

如何使用代码
安装项目前置依赖,以及启动项目的方法,参看:React 拾遗:项目脚手架。

请根据文章内容,把相应部分的代码注释取消,即可运行。

摘要
本文介绍

JavaScript 类与面向对象的参考资料
React 类中的属性与方法
React 的状态 state 读取与修改
项目代码地址:React 拾遗:类作为组件 (1)

JavaScript 类与面向对象
面向对象编程(Object-Oriented Programming, OOP)是一个古老的概念。OOP 要解决的一个问题是:

需要有一个容器,可以存放属性与方法
容器可以被继承。被继承的容器,其属性与方法都可以在新容器中继续复用
不管是 C++ 还是 Java 提到的类与实例,或者 Python 的 Metaclass,亦或是 JavaScript 的原型及其扩展,都是为了解决上述面向对象要解决的问题。

关于 JavaScript 的面向对象与原型链,可以在以下内容中找到详细叙述,本文不再赘述。

JavaScript高级程序设计(第3版), Nicholas C.Zakas
JavaScript面向对象编程指南(第2版),Stoyan Stefanov
Object - JavaScript | MDN
Object.prototype - JavaScript | MDN
Principles of Object-Oriented JavaScript, Nicholas C.Zakas
React 中的类组件
1 最简单的 React 类组件
React 的最简单的类组件如下所示:

import React, { Component } from 'react';
import ReactDOM from 'react-dom';

class App extends Component {
render() {

return (
  <div>
    <h1>Title - main title</h1>
    <p>The content part</p>
  </div>
);

}
}

ReactDOM.render(, document.getElementById('root'));
React 的类组件都是继承自 React.Component,其中 Component 可以单独引入
React 类组件中唯一必须的方法是 render() {}。该方法返回一段 JSX 代码。
市面上有些教程,仍然使用 createReactClass。由于 React 已经全面转向使用 ES 6,所以用 createReactClass 创建类组件已经不再推荐。建议直接继承 React.Component 来创建 React 类组件。
2 类组件的属性与状态(state)
(1) render() 方法中的变量
为了动态显示 JSX 内容,在 render() 方法中可以使用变量,如下所示:

class App extends Component {
render() {

const title = 'main title';
return (
  <div>
    <h1>Title - {title}</h1>
    <p>The content part</p>
  </div>
);

}
}
但是 render() 方法中的变量,通常有两种用途:

设置内联样式
临时变量。主要根据条件,返回不同的 JSX 代码,达到根据条件判断而渲染的效果。
(2) constructor() 中的变量
如果要设置一个变量,让类中所有方法都能使用,就是放在构造器 constructor() 中。构造器中的变量,在类创建时就同时创建完成,可以在整个类中使用。

class App extends Component {
constructor() {

super()
this.title = 'title in constructor'

}

render() {

return (
  <div>
    <h1>Title - {this.title}</h1>
    <p>The content part</p>
  </div>
);

}
}
两个注意点:

构造器 constructor() 中,需要用一个 super() 方法,继承所有父类的属性与方法。而且,如果这个类组件要接受上层传递下来的 props 时,需要写成

class App extends Component {
constructor(props) {

super(props)
//...

}
//...
}

相关文章
|
弹性计算 负载均衡 监控
jemeter压测【2万用户每秒5次请求在30秒内处理完请求】(二)
jemeter压测【2万用户每秒5次请求在30秒内处理完请求】
303 0
|
编解码 人工智能 达摩院
建站新功能上线:1秒钟抠好一张图!
建站新功能上线:1秒钟抠好一张图!
946 1
建站新功能上线:1秒钟抠好一张图!
|
定位技术 Python
用Python Tkinter打造的精彩连连看小游戏【附源码】
用Python Tkinter打造的精彩连连看小游戏【附源码】
377 0
|
XML Java 数据库
配置applicationContext.xml文件
配置applicationContext.xml文件
220 13
|
存储 数据可视化 算法
原始边列表转换为邻接矩阵
【6月更文挑战第23天】在图论和网络分析中,图由节点和边构成,可以用邻接矩阵表示。Python代码展示了如何从边列表`(0, 1), (0, 2), (1, 2), (2, 3)`转换成邻接矩阵,涉及有向/无向图、权重处理及稀疏矩阵优化。此外,还包括了使用NetworkX库进行图可视化以及将邻接矩阵逆向转换为边列表。这些方法在处理大规模图数据时尤其重要,如社交网络分析和交通规划。
|
微服务
springCloud之路由网关gateway
springCloud之路由网关gateway
241 0
|
存储 SQL 分布式计算
AnalyticDB MySQL升级为湖仓一体架构:从湖到仓,打造云原生一站式数据分析平台
AnalyticDB MySQL湖仓版同时支持低成本离线处理和高性能在线分析,适合ETL/BI报表/交互式查询/APP应用等多场景,并可无缝替换CDH/TDH/Databricks/Presto/Spark/Hive等
|
Cloud Native 关系型数据库 MySQL
小白新手一篇看懂PolarDB-X
简要讲述什么是PolarDB-X,以及基础安装,与srpingboot项目整合等
小白新手一篇看懂PolarDB-X
|
测试技术 容器 API
JUnit + Mockito 单元测试(二)
JUnit 是单元测试框架。Mockito 与 JUnit 不同,并不是单元测试框架(这方面 JUnit 已经足够好了),它是用于生成模拟对象或者直接点说,就是”假对象“的工具。两者定位不同,所以一般通常的做法就是联合 JUnit + Mockito 来进行测试。
2229 0