ReactJS组件函数
ReactJS component functions
仍然有关于ReactJS=的愚蠢问题)有没有办法将公共函数添加到React组件中?我正在尝试制作这样的东西:
var LoginForm = React.createClass({
getInitialState: function() {
},
render: function() {
},
MyFunc: function () {
}
})
...
var login_form = LoginForm({});
React.renderComponent(login_form, document.body);
...
login_form.MyFunc (); <-- error
你能解释一下我做错了什么吗?
您不应该在组件本身之外使用组件的方法(或将其作为回调传递给子组件)。您应该将这些方法视为私有方法。
但是,您可以使用React的一个名为statics
的功能来提供在组件外部可用的功能。然而,这些函数应该被视为类的静态函数,因此它们无法访问组件实例(如this.props
或this.state
)的内部。
以下是组件的一些静态设置示例:
var Component = React.createClass({
statics: {
// these functions are available outside the component
renderToBody: function() {
React.renderComponent(
<Component />,
document.body
);
}
},
// cannot access this function outside the component
getHelloWorld: function() {
return 'Hello World!';
},
render: function() {
return (
<div>{this.getHelloWorld()}</div>
);
}
});
因此,如果我们调用React.renderComponent(Component({}), elem)
,那么该组件将呈现为elem
,但由于静态,您可以调用Component.renderToBody()
,它将直接将该组件呈现给<body>
元素。
IE:在组件的statics
对象中定义的函数可以直接作为静态函数使用。但是,您必须记住,它们是static
,因为它们是实例化组件对象的而不是部分,它们只是您可以在类上调用的函数。
react的整个理念是组件尽可能地独立。您永远不应该直接从组件外部访问组件实例函数,因为您应该做的只是更改组件的道具并重新渲染它,以便在内部进行更改。
这里有一个例子:
var Component = React.createClass({
propTypes: {
// always get in the habbit of using propTypes!
message: React.PropTypes.string.isRequired,
show: React.PropTypes.bool
},
render: function() {
return (
<div style={{display: this.props.show ? 'block' : 'none'}}>
{this.props.message}
</div>
);
}
});
而您可能已经在组件上创建了一个方法show()
(这样您就可以执行component.show(true)
或component.show(false)
来显示/隐藏),而是将其作为相同结果的属性进行传递。
调用React.renderComponent(Component({message: 'foo', show: true}), elem)
会使组件可见,使用show: false
重新渲染会隐藏它,等等。结果相同,但使用道具,这是反应方式。
简单的答案是LoginForm({})不返回组件。它返回一个描述符对象,React稍后将使用该对象来实例化组件。有两种方法可以访问实际组件:
- 作为分量方法中的
this
- 通过给予该组件CCD_ 16道具;在创建者的
componentDidMount
执行时,实际组件将在创建者中可用,如this.refs.name
http://facebook.github.io/react/docs/more-about-refs.html
通过使用渲染函数的结果:
var login_form = React.renderComponent(LoginForm({}), document.body);
login_form.MyFunc();
login_form.setProps({loaded: true});
这方面的用例是,您可以在根组件上调用setProps(但仅在根上)。
- 拨打'父亲'函数形式a'儿童'ReactJS中的组件
- 如何控制组件'的createContent函数被激发
- 如何在渲染函数中检查 react 中子组件的状态
- ember-js组件初始化不同的函数
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 带有内置图像对象的Canvas组件构造函数;t显示's图像
- 如何在单击组件时调用函数
- 当写入“;函数“;在ReactJS组件中
- ES6调用扩展组件函数
- 将事件绑定到其他UI组件's函数,在Kendo MVVM中
- 如何调用React组件's函数(Coherent UI)
- 在jQuery就绪函数上未完成Primefaces布局组件
- 如何使用Angular 1.5组件将属性求值为字符串,这是一个自定义函数
- 如何在react组件构造函数中设置Interval
- 如何绑定'这'到react类之外的函数,后者是来自其他组件的回调
- 如何在作为“prop”传递给子组件的函数中使用“this”
- React:将props传递给函数组件
- 用javascript重写react函数组件
- 不能为无状态函数组件提供引用
- “无状态函数组件”与“ES6类组件”相比有什么优势