- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在互联网上寻找步骤来重构以前的应用程序以采用新方法,但我没有找到令人满意的答案......
我知道以前在 ReactJS 中创建应用程序的方法,它使用 组件
和 渲染()
函数为例,但我可以看到它目前有所不同,因为:
npx create-react-app app-name
现在正在生成不同的模板。
例如,之前导入的是:
import React, {Component} from 'react';
现在仅:
import React from 'react';
我正在寻求有关我应该更改哪些内容的提示或简单建议,以便旧代码可以在不导入组件的情况下工作 组件
。
通过AJAX使用函数进行通信的方法(例如loadPerson
)也改变了吗?
例如,这里是 ./src/PersonDetail.js
的一些不起作用的示例:
import React from 'react';
import { DetailList } from './DetailList';
import { loadPerson } from './requests';
export class PersonDetail {
constructor(props) {
super(props);
this.state = {person: null};
}
async componentDidMount() {
const {personId} = this.props.match.params;
const person = await loadPerson(personId);
this.setState({person});
}
render() {
const {person} = this.state;
if (!person) {
return null;
}
return (
<div>
<h1 className="title">{person.name}</h1>
<div className="box">{person.description}</div>
<h5 className="title is-5">Details at {person.name}</h5>
<DetailList details={person.details} />
</div>
);
}
}
提前谢谢您。
最佳答案
与 introduction of hooks一些核心概念开始发生变化。在 React 16.8 之前,我们通常根据经验法则来决定组件应该基于 class
还是 function
:
If the component should hold state then it should be class based. If it doesn't have state (stateless) then it could be a functional component
这曾经是正确的,因为没有办法在功能组件内实现有状态逻辑。现在,钩子(Hook)允许您在功能组件中实现状态
。
由create-react-app
生成的样板不再从react
导入Component
,因为只有基于类的组件需要从
,Component
扩展App
现在是一个功能组件。
实际上没有任何改变,这只是编写组件的另一种方式。
像以前一样导入:
export class PersonDetail extends React.Component
或者给钩子(Hook)一个机会,将你的组件变成功能组件:
import React, { useState, useEffect } from 'react';
import { DetailList } from './DetailList';
import { loadPerson } from './requests';
const PersonDetail = ({ personID }) => {
const [person, setPerson] = useState(false)
useEffect(() => {
const person = await loadPerson(personId)
setPerson(person)
}, [personID])
return !person ? null : (
<div>
<h1 className="title">{person.name}</h1>
<div className="box">{person.description}</div>
<h5 className="title is-5">Details at {person.name}</h5>
<DetailList details={person.details} />
</div>
)
}
关于reactjs - React - 使用新方法时如何更改以旧方式编写的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57694986/
如果有人能为我分解它,让我能理解它,我会非常感激。我知道它用于通过 apply 方法创建新对象。 Function.prototype.new = function () { var args
新版本的HADOOP中有一个方法。http://hadoop.apache.org/docs/current/api/org/apache/hadoop/fs/FileSystem.html#conc
根据支持库变更日志和 Fragment 类文档 ( https://developer.android.com/reference/android/support/v4/app/Fragment.ht
根据支持库更改日志和 Fragment 类文档 (https://developer.android.com/reference/android/support/v4/app/Fragment.htm
执行Async BigJob() 的无限运行任务的正确方法是什么?并且可以根据要求停止 提示:我正在尝试学习 [一种] 新方法来更新我现有的策略。 我有一个简单的程序(测试程序),它有一个开始 和停止
我将解释我的想法:我使用 python 作为谷歌应用程序引擎 + js + css 主项目将存储在 src 文件夹下,如下所示:\src \app <--- 这里是 gae 的所有 python 应用
我是一名优秀的程序员,十分优秀!