[React] React Fundamentals: with-addons - ReactLink
It can be tedious to type out all the boilerplate needed to get the DOM and states in React to synchronize. Luckily, React provides a version of the toolkit with a selection of available addons. This lesson is going to dig into ReactLink, and how this addon can give you two-way binding.
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>React Lesson 15: dynamically create componenets</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.12.2/react.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.12.2/JSXTransformer.js"></script> <style> body { margin: 25px; } </style> </head> <body> <div id="panel"></div> <script type="text/jsx"> /** @jsx React.DOM */ var App = React.createClass({ getInitialState:function(){ return { name: '', email: '' } }, update: function () { this.setState({ name: this.refs.name.getDOMNode().value, email: this.refs.email.getDOMNode().value }) }, render:function(){ return ( <form> <div> <input type="text" ref="name" onChange={this.update} placeholder="Name"/> <label>*{this.state.name}*</label> </div> <div> <input type="text" ref="email" onChange={this.update} placeholder="Email"/> <label>*{this.state.email}*</label> </div> </form> ); } }); React.render(<App />, document.getElementById('panel')); </script> </body> </html>
Use addon: ReactLink
1. include the script:
script src="https://fb.me/react-with-addons-0.13.3.js"></script>
2. Add mixin:
mixins: [React.addons.LinkedStateMixin],
3. Use valueLink={this.linkState('name')} instead of 'ref' and 'onChange':
<input valueLink={this.linkState('name')} type="text" placeholder="Name" />
Code:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>React Lesson 15: dynamically create componenets</title> <script src="https://fb.me/react-with-addons-0.13.3.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.3/JSXTransformer.js"></script> <style> body { margin: 25px; } </style> </head> <body> <div id="panel"></div> <script type="text/jsx"> /** @jsx React.DOM */ var App = React.createClass({ mixins: [React.addons.LinkedStateMixin], getInitialState:function(){ return { name: '', email: '' } }, render:function(){ return ( <form> <div> <input valueLink={this.linkState('name')} type="text" placeholder="Name" /> <label>*{this.state.name}*</label> </div> <div> <input valueLink={this.linkState('email')} type="text" placeholder="Email" /> <label>*{this.state.email}*</label> </div> </form> ); } }); React.render(<App />, document.getElementById('panel')); </script> </body> </html>
【推荐】国内首个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工具