javascript - 多个(动态)元素的 createRef
问题描述
我知道React.createRef()
这很简单,要引用一些东西,只需在构造函数中声明它:
constructor(props) {
super(props)
this.inputRef = React.createRef()
}
然后在渲染中:
render() {
<input ref={this.inputRef} type="text" />
}
我不知道如何在 React 版本 16 中使用 Refs 和 DOM。
我有这个列表并渲染:
<div>{arr.map(person => <div>{person.name}</div>)}
我怎样才能做到这一点?
解决方案
您可以在 refs 上使用不同的名称
<input type="text" ref={this.inputField1} />
<input type="text" ref={this.inputField2} />
在您的构造函数中,您可以像这样使用 createRef :
this.inputField1 = React.createRef();
this.inputField2 = React.createRef();
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.inputField1 = React.createRef();
this.inputField2 = React.createRef();
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.inputField1.current.value = '1'
this.inputField2.current.value = '2'
}
render() {
return (
<div>
<input type="text" ref={this.inputField1} />
<input type="text" ref={this.inputField2} />
<button type="button" onClick={this.handleClick}>
click me
</button>
</div>
);
}
}
ReactDOM.render(
<MyComponent/>,
document.getElementById('container')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="container">
</div>
推荐阅读
- swift - 如何使精灵的速度相同?
- css - 如何在 create-react-app 和 Typescript 中使用 css 模块覆盖 Material-UI?
- php - GoCardless API - 列出订阅
- json - jq 通过参数名称转换 JSON 结果集(没有严格的参数顺序)
- excel - 根据另一个字符串的值提取字符串的一部分
- android - CameraPreview Ionic Cordova 错误“plugin_not_installed”,但插件已安装 | 角 8
- javascript - 如何在循环函数内对chart.js中的数组值求和?
- r - R Step函数在全局环境中查找数据,而不是在定义的函数内部
- flutter - 如何正确保存 sharedPreferences 中的值?- 颤振
- c++ - C++:十六进制值到字符串