我是个新来的反应者,不懂什么。我有两个组件:父函数组件和子类组件。假设,从FC我需要从useState钩子传递非常简单的数组。当构造函数中的类内组件尝试注销道具时,结果是空数组。但在组件中成功渲染数组项。如果我不使用-useState钩子并将现有的array-console.log(props)结果传递给该数组。为什么会这样?我认为它与异步操作有关,但如果需要在基于props的构造函数中定义初始状态呢?因为道具没有定义,我不能做。你能帮我弄清楚吗
const FunctionalComponent = () => {
const [state, setState] = useState([]);
useEffect(() => {
setState(['Jim', 'Bob', 'Tom']);
}, []);
return (
<div>
<ClassComponent names={state} />
</div>
);
}
// And class component
class ClassComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
// Some state ...
};
console.log(props); --- // []
}
render() {
const { names } = this.props;
return <div>{names}</div>; -- // renders items
}
}
https://codesandbox.io/s/props-to-class-component-from-usestate-5z5k3?file=/src/index.js
您的初始状态是由useState
定义的[]
。在这种状态下,功能组件最初呈现,它还以[]
作为初始道具呈现ClassComponent
。这就是传递给构造函数的内容。
之后不再调用构造函数。相反,新的props
将仅分配给组件。
您可以看到类组件如何呈现正确的数据,但console.log输出并不适用于它们。这是因为创建和更改状态是异步操作。要查看道具是如何更改的,您必须为FC使用use效应,为类组件使用组件didUpdate。
class Counter extends React.Component {
constructor(props) {
super(props);
}
componentDidUpdate() {
console.log(this.props.names)
}
render() {
const { names } = this.props;
return <div>{names}</div>;
}
}
或者,您可以将console.log放在渲染部分的右侧:
render() {
console.log(this.props.names)
const { names } = this.props;
return <div>{names}</div>;
}
如果要console.log类组件的新状态,请使用回调函数作为setState的第二个参数,如下所示:
setState({counter: this.counter + 1}, ()=>console.log(counter))
否则,它会显示之前的状态值。
问题内容: 我有React表单,其中有一个用于渲染下拉菜单的Component,因为这些选项来自API。但是,我无法访问嵌入式组件的引用。我正在整理我的第一个表格,并试图了解解决此问题的最佳方法。 问题答案: 最好将视为回调属性,并且不再依赖于Object。如果确实使用对象,请避免访问后代组件。您应该将其视为私有访问器,而不应将其视为组件API的一部分。仅将组件实例上公开的方法视为其公共API。
问题内容: 我试图了解何时使用React功能组件和类,并从文档中阅读它们并没有真正详细介绍。当您希望类的特定功能构成组件时,能否给我下面的一些主要例子? 功能组件的功能较弱,但更简单,并且仅使用一个render()方法就类似于类组件。除非您需要仅在类中可用的功能,否则我们建议您改用功能组件。 问题答案: 您仅在以下情况下需要组件: 需要组件 状态 或 需要 生命周期方法 。例如等
3.4.0 对组件反解机制做了全面的升级。新的组件反解基于数据和模板匹配的机制,代替原来的标记机制。 旧的基于标记的组件反解请见老文档 版本:>= 3.4.0 提示:通过 San 进行服务端渲染,一定能通过相同版本的 San 在浏览器端进行反解。 概述 组件初始化时传入 el,其将作为组件根元素,并以此反解析出视图结构。 该特性的意图是:有时我们为了首屏时间,期望初始的视图是直接的 HTML,不由
我很困惑组件和react类之间有什么区别? 什么时候在反应类上使用组件?看起来组件是一个类,createClass创建了一个组件。 https://facebook.github.io/react/docs/top-level-api.html 反应组件 这是使用ES6类定义React组件时的基类。有关如何将ES6类与React一起使用,请参见可重用组件。有关基类实际提供的方法,请参见组件API。
我见过多个使用Typescript的React组件示例: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++组件 当我们不使用道具或国家时,似乎没有一个明确的惯例。 人们将这些类型设置为,,,, ,等等。这是我到目前为止看到的:
我正在使用一个名为React语义ui日期选择器的React模块,我相信它是基于React日期选择器的。不管怎样,这都是一个普通的问题。我的主类组件和日期选择器功能组件位于同一个文件中。日期选择器呈现并工作正常,但我不知道如何在主类组件中访问日期选择器的实际值。 代码的简化版本可以在下面看到,我只是控制台日志记录了几个变量的值。有人能给我一个建议,告诉我从类组件中访问所选日期选择器值的最佳方式吗?