[React Fundamentals] Composable Components
To make more composable React components, you can define common APIs for similar component types.
import React from 'react'; import ReactDOM from 'react-dom'; export default class App extends React.Component{ constructor(){ super(); this.state = { red: 0, green: 0, } } update(){ this.setState({ red: ReactDOM.findDOMNode(this.refs.red.refs.inp).value, green: ReactDOM.findDOMNode(this.refs.green.refs.inp).value, }) } render(){ return( <div> <NumInput ref="red" type="range" min={0} max={255} step={1} val={+this.state.red} label="Red" update={this.update.bind(this)} ></NumInput> <NumInput ref="green" type="number" step={0.01} val={+this.state.green} label="Green" update={this.update.bind(this)} ></NumInput> </div> ); } } class NumInput extends React.Component{ constructor(){ super(); } render() { const label = this.props.label ? <label>{this.props.label} - {this.props.val}</label> : ''; return ( <div> <input type={this.props.type} min={this.props.min} max={this.props.max} step={this.props.step} defaultValue={this.props.val} onChange={this.props.update} ref="inp" /> {label} </div> ); } } NumInput.propTypes = { type: React.PropTypes.oneOf(['range', 'number']), min: React.PropTypes.number, max: React.PropTypes.number, step: React.PropTypes.number, val: React.PropTypes.number, label: React.PropTypes.string, update: React.PropTypes.func.isRequired, }; NumInput.defaultProps = { type: 'range', min: 0, max: 255, step: 1, val: 0, label: '' };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具