鉴于此组件:
import React from 'react'
import ReactDOM from 'react-dom'
import PropTypes from 'prop-types'
const NewGoalInput = props => {
return (
<input type="text" onKeyUp={handleKeyUp}/>
)
}
const handleKeyUp = (e) => {
if (e.key === "Enter") {
// TODO Add goal
}
}
export default NewGoalInput
如何添加一个无需使用extends React.Component
语法即可定义状态的构造函数?
由于它是一个无状态组件,因此没有组件生命周期。因此,您不能指定constructor
。
您必须进行扩展React.Component
以创建有状态组件,然后需要一个构造函数,并且可以使用state
。
更新
由于阵营16.8.0和挂钩得到了引入有更多的选择。
挂钩是一项新的功能建议,使您无需编写类即可使用状态和其他React>功能。它们作为> v16.8.0的一部分在React中发布
无状态:
import React from "react"
const Stateless = ({name}) => (
<div>{`Hi ${name}`}</div>
);
有状态:
可以访问组件生命周期方法和本地状态。
class Stateful extends React.Component {
constructor(props) {
super(props);
this.state = {
count: 0
};
}
componentDidMount() {
const { count } = this.state;
document.title = `You've clicked ${count} times.`;
}
componentDidUpdate() {
const { count } = this.state;
document.title = `You've clicked ${count} times.`;
}
render() {
const { count } = this.state;
return (
<div>
<p>You've clicked {count} times.</p>
<button onClick={() => this.setState({ count: count + 1 })}>
Click me
</button>
</div>
);
}
}
使用挂钩:
能够使用State Hook
和Effect Hook
。
如果您熟悉React类的生命周期方法,则可以将useEffect
Hook视为componentDidMount,componentDidUpdate和componentWillUnmount的组合。
import React, { useState, useEffect } from "react";
const UsingHooks = () => {
const [count, setCount] = useState(0);
// Similar to componentDidMount and componentDidUpdate:
useEffect(() => {
// Update the document title using the browser API
document.title = `You've clicked ${count} times.`;
});
return (
// <> is a short syntax for <React.Fragment> and can be used instead of a wrapping div
<>
<p>You've clicked {count} times.</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</>
);
}
问题内容: 这个问题与使用React时类似。是否最好在构造函数中使用胖箭头函数或绑定函数?但是有点不同。您可以将函数绑定到构造函数中,或者仅在构造函数中应用箭头函数。请注意,我只能在项目中使用ES6语法。 1。 2。 这两种方式的优缺点是什么?谢谢。 问题答案: 由于某些原因,选项1通常更可取。 原型方法更易于扩展。子类可以覆盖或扩展与 当实例属性 或ES.next class字段 代替使用,调用
问题内容: 我可以使用关键字将javascript函数标记为“异步”(即返回承诺)。像这样: 箭头功能的等效语法是什么? 问题答案: 异步 箭头函数 如下所示: 传递给它的 单个参数的 异步 箭头函数 如下所示: __ 该 匿名 形式的作品,以及: 异步函数 声明 如下所示: 在 回调中 使用异步函数:
但我想把它胖箭头化: 除了我得到一个错误,因为在胖箭头后面的意味着返回未定义的代码块(除非您显式地某些东西)。至少我一开始是这么想的。但我认为现在被绑定到胖箭头函数,现在是。 所以我试着这样做: 所以我想我有两个问题我很好奇。首先,从一个简单的语句胖箭头函数返回对象的惯用方法是什么?其次,如何返回对周围上下文的对象有引用的对象?
我使用的是jdk8,需要创建一个以类名作为构造函数参数的Spring组件。但是,使用我当前的代码,我遇到了运行时错误: 这是我的博客类: 这就是我尝试创建类的方式: 我可以了解一下创建该组件的正确方法/这里出了什么问题吗?提前感谢。
我先试过这个- 很好用。现在我用胖箭做了同样的事情。在这种情况下,“this”是未定义的。
问题内容: 使用Typescript在Visual Studio中输入“ .ts”文件,请考虑以下声明: 这很好,类型检查很好,一切都很好。 现在,将完全相同的代码放入用于JSX和React的“ .tsx”文件中。 Intellisense感到非常沮丧和抱怨,因为它试图使 成为React JSX元素。但我的意图是让编译器将其视为通用类型指示符。 编译器抱怨: [gulp-typescript] 1