React.js学习版2~
我一个沉迷学习无法自拔的美男子~来更新react学习第二弹了! this.props.children var NodesList = React.createClass({
render: function() {
return (
<ol>
{
React.Children.map(this.props.children,function (child) {
return <li>{child}</li>;
})
}
</ol>
);
}
});
ReactDOM.render(
<NodesList>
<span>hello</span>
<span>world</span>
</NodesList>,document.getElementById('box')
);
上面代码中的NodeList组件中有两个span结点,它们都可以通过this.props.children读取。
React提供一个工具方法React.Children来处理this.props.children。我们可以用React.Children.map来遍历子节点,而不用担心this.props.children的数据类型是undefined还是object PropTypes 组件的属性可以接受任意值,字符串、对象、函数等等都可以。有时,我们需要一种机制,验证别人使用组件时,提供的参数是否符合要求。 var data = "最帅!";
var MyTitle = React.createClass({
propTypes: {
title: React.PropTypes.string.isRequired,},render: function() {
return <h1> {this.props.title} </h1>
}
});
ReactDOM.render(
<MyTitle title={data} />,document.getElementById('box')
);
getDefaultProps方法可以用来设置组件属性的默认值 var MyTitle = React.createClass({
getDefaultProps: function() {
return {
title: 'Hello World'
};
},render: function() {
return <h1>{this.props.title}</h1>
}
});
ReactDOM.render(
<MyTitle />,document.getElementById('box')
)
获取真实的DOM节点 组件并不是真实的DOM节点,而是存在与内存之中的一种数据结构,叫做虚拟DOM(virtual DOM)。只有当它插入文档之后,才会变成真实的DOM。根据React的设计,所有的DOM变动,都先在虚拟DOM上发生,然后再将实际发生变动的部分,反映在真实的DOM上,这种算法叫做DOM diff,它可以极大提高网页的性能表现。 var MyComponent = React.createClass({
handleClick: function() {
this.refs.myTextInput.focus();
},render: function() {
return (
<div>
<input type="text" ref="myTextInput" />
<input type="button" name="" value="Focus" onClick={this.handleClick} />
</div>
)
}
});
ReactDOM.render(
<MyComponent />,document.getElementById('box')
);
上面这段代码可以理解为 当你点击focus按钮时,input框会聚焦 那么下面的代码会给你更直观的感受 var MyComponent = React.createClass({
handleClick: function(event) {
var index = event.target.value;
if(index >= 1 && index <= 10) {
//找到对应的输入框并将焦点设置到里面
var refName = "input" + index;
//var inputDOM = React.findDOMNode(this.refs[refName]);
var inputDOM = this.refs[refName];
inputDOM.focus();
}
},render: function() {
var inputs = [];
for(var i = 1; i <= 10; i++) {
inputs.push(<div><li><input type="text" ref={"input" + i}/></li><br/></div>);
}
return (
<div>
<label htmlFor="input" >在这里输入下面任意输入框的索引,光标会自动定位到输入框内:</label>
<input type="text" id="input" onChange={this.handleClick} />
<hr />
<ol>
{inputs}
</ol>
</div>
)
}
});
ReactDOM.render(
<MyComponent />,document.getElementById('box')
);
官方解释:ref属性 第二弹结束~ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |