我知道在香草ES6中,您可以编写一个类
,它扩展了一个函数类。这里解释了这一点。
React支持两个ES6类组件,通过扩展React。组件和功能组件。但是,当尝试扩展功能组件时,我遇到了以下错误。
TypeError: Cannot call a class as a function
我正在尝试编写一些扩展组件的代码,这些代码同时适用于ES6类组件和功能组件。我想写一个函数,返回一个组件,但不是一个高阶组件,我只想扩展和修改一些道具。
下面是一些我尝试过但不起作用的示例代码。这可能吗?我意识到BarExtended
根本不会呈现Bar
,但我只是在测试。除非这是问题的一部分。
function Bar() {
return (
<h1>Bar</h1>
);
}
class BarExtended extends Bar {
render() {
return (
<h1>BarExtended</h1>
);
}
}
ReactDOM.render(
<div>
<BarExtended />
</div>,
document.getElementById("foo")
);
嗯。。我认为这毫无意义。
一个功能组件只是一个函数,你知道,一个渲染函数。
因此扩展一个功能组件意味着你将覆盖渲染函数,并且。。这意味着覆盖整个函数组件(因为它只是一个渲染函数),然后不扩展任何内容。
警告:至少据我所知,在react方面,这实际上是不可能的,因为您需要继承react.Component,使其成为react组件,如so bar只是一个函数。
class Bar extends React.Component {
}
您不必将类与react一起使用,您可以使用常规函数。但我认为你们需要的是高阶组件。它可以为您传递给它的任何组件提供额外的功能。
function Bar(WrappedComponent){
return class BarExtended extends React.Component {
addThisFunction(){
console.log('I extended the wrapped component with functionality')
}
render (
return (
<WrappedComponent addThisFunction={this.addThisFunction}/>
)
)
}
}
如果你真的想从普通课程中学习,你可以这样做。这是正确的从类文档。
function Animal (name) {
this.name = name;
}
Animal.prototype.speak = function () {
console.log(this.name + ' makes a noise.');
}
class Dog extends Animal {
speak() {
console.log(this.name + ' barks.');
}
}
var d = new Dog('Mitzie');
d.speak();
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes
问题内容: 在花了一些时间学习React之后,我了解了创建组件的两个主要范例之间的区别。 我的问题是,什么时候应该使用哪个?为什么?一个人相对于另一个人的利益/取舍是什么? ES6课程: 功能性: 我认为只要没有状态可以由该组件操纵,功能就可以了,是吗? 我猜如果我使用任何生命周期方法,最好使用基于类的组件。 问题答案: 你有正确的主意。如果您的组件只做一些道具和渲染,那么功能就可以了。您可以将它
在花了一些时间学习React之后,我理解了创建组件的两种主要模式之间的差异。 我的问题是什么时候我应该使用哪一个,为什么?一种方法与另一种方法相比有哪些好处/利弊? ES6类: 功能: 我认为只要没有状态可被该组件操纵,就可以正常工作,但就这样吗? 我想如果我使用任何生命周期方法,最好使用基于类的组件。
我有一个自己的骆驼组件/endpoint,我在Spring Boot应用程序中成功地在许多路线中使用。我正试图迁移到骆驼夸克斯,并在我的应用程序中使用相同的路线。 在我的camel quarkus应用程序中,仅通过添加相关依赖项是不可能使用此组件/endpoint的:quarkus无法像Spring Boot那样发现此组件/endpoint。 显而易见的解决方案是编写一个在后台使用这个camel组
jsx 使用上面的代码,im得到控制台错误:
> 在ES6中直接初始化类上的属性是不可能的,目前只能用这种方式声明方法。同样的规则也存在于ES7中。 https://stackoverflow.com/a/38269333/4942980 render方法中的一个函数将在每个呈现中创建,这对性能有一点影响。如果你把它们放在渲染图中也很乱 ...更喜欢只将专门处理呈现组件和/或JSX的函数放在render中(即,在prop上进行映射,根据pro
问题内容: 我正在将React.js与TypeScript一起使用。有什么方法可以创建从其他组件继承但具有一些其他道具/状态的React组件? 我想要达到的目标是这样的: 但是,如果我把这个会失败中,我得到一个错误的打字稿(类型的参数是不能分配给类型)。我想这不是TypeScript专用的东西,而是将继承与泛型(?)混合使用的一般限制。是否有任何类型安全的解决方法? 更新 我选择的解决方案(基于D