ReAct 常用 的属性

本文详细介绍了React组件中属性的获取方式,包括使用this.props对象和this.props.children处理子节点,同时讨论了如何设置默认属性和使用ref访问真实DOM节点。通过实例展示了组件与HTML元素的混用及处理过程。


<People {...this.state} onHungry={this.onHungry}></People>
如果组件有多个属性 可以使用   {...this.state}  这相当于 类似于 name={this.props.name}     title={this.props.title}



组件的属性可以在组件类的 this.props 对象上获取

this.props 对象的属性与组件的属性一一对应,但是有一个例外,就是 this.props.children 属性。它表示组件的所有子节点


这里需要注意, this.props.children 的值有三种可能:如果当前组件没有子节点,它就是 undefined ;如果有一个子节点,数据类型是 object ;如果有多个子节点,数据类型就是 array 。所以,处理 this.props.children 的时候要小心


React 提供一个工具方法 React.Children 来处理 this.props.children 。我们可以用 React.Children.map 来遍历子节点,而不用担心 this.props.children 的数据类型是 undefined 还是 object。更多的 React.Children 的方法,请参考官方文档


此外,getDefaultProps 方法可以用来设置组件属性的默认值。


但是,有时需要从组件获取真实 DOM 的节点,这时就要用到 ref 属性(查看 demo07 )。


var MyComponent = React.createClass({
  handleClick: function() {
    this.refs.myTextInput.focus();
  },
  render: function() {
    return (
      <div>
        <input type="text" ref="myTextInput" />
        <input type="button" value="Focus the text input" onClick={this.handleClick} />
      </div>
    );
  }
});

ReactDOM.render(
  <MyComponent />,
  document.getElementById('example')
);
	 var InputText = React.createClass({  
       render: function() { 
		 var LabelElement = React.createElement("label", null,this.props.label);
		 if(this.props.label==null)
		 {
			 LabelElement="";
		 }	   
         return (
			<div className="span12 field-box">
				{LabelElement}
				<input className="span9" id={this.props.id} type="text"  placeholder={this.props.placeholder}/>
			</div>
		 );  
       }  
     });
</pre><pre name="code" class="html"><InputSelect label="State:">
<option value="AK" >Alaska</option>
<option value="HI" >Hawaii</option>
<option value="CA" >California</option>
<option value="NV" >Nevada</option>
<option value="OR" >Oregon</option>
<option value="WA" >Washington</option>
<option value="AZ" >Arizona</option>
</InputSelect>


组件与html混用

var InputSelect = React.createClass({ 
render: function() {  
return (
<div className="span12 field-box">
<label>{this.props.label}</label>
<div className="ui-select span5">
<select>
     
{this.props.children}
  
</select>
</div>
</div>
);  
}  
});


### React常用的 HTML 标签及组件 在 React 应用开发过程中,开发者可以使用标准的 HTML 标签来构建页面结构。这些标签可以直接写入 JSX 语法中,并由 React 渲染到浏览器 DOM 上。 #### 常见 HTML 标签 常见的 HTML 标签包括但不限于: - **`<div>`**: 定义文档中的分区或节[^1]。 - **`<span>`**: 定义文档中的内联容器。 - **`<p>`**: 表示一段文字内容。 - **`<a href="...">`**: 创建超链接,用于导航至其他网页或资源。 - **`<img src="..." alt="..."/>`**: 插入图像文件并提供替代文本描述。 - **表单相关标签** - `<input type="text" />`: 文本输入框。 - `<textarea></textarea>`: 多行文本区域。 - `<button></button>`: 可点击按钮。 - `<select><option>...</option></select>`: 下拉列表选择器。 除了上述基本元素外,在处理用户交互时还会频繁遇到如下情况下的特殊属性设置方法: 对于像 `input`, `textarea` 和 `select` 这样的表单项来说,如果希望它们成为受控组件,则需通过 JavaScript 来管理其状态变化。例如,当用户修改了一个文本框的内容后,应该更新相应的组件状态变量;反之亦然 —— 当组件的状态发生变化时也要同步反映到视图上显示出来的值上去。这可以通过监听事件(如 `onChange`)并将新的数据传递给 setState 方法实现。 ```jsx class InputField extends React.Component { constructor(props){ super(props); this.state = {value : ''}; } handleChange(event){ this.setState({value:event.target.value}); } render(){ return ( <form> <label> Name: <input type="text" value={this.state.value} onChange={(event)=>this.handleChange(event)} /> </label> </form> ); } } ReactDOM.render(<InputField/>,document.getElementById('root')); ``` 此外,React 提供了一些内置的功能性组件以及允许创建自定义组件以满足特定需求。比如高阶组件(HOC),这是一种模式而非 API 特性,用来增强现有组件功能而不改变原有逻辑的一种方式[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值