react的refs已经是过时的API了,不适合用于循环动态赋值ref,最近又在项目中遇到需要循环动态赋值ref,这是用createRef的方法,在此记录一下,亲测有效!
handleChange = (key) => {
this[`input${key}Ref`] = React.createRef();
handleSave = () => {
const { list } = this.state;
for (let item of list) {
if (item.value && item.value.length > 100) {
Toast.show(`${item.name}不能超过100个字符`);
this[`input${item.key}Ref`].current&&this[`input${item.key}Ref`].current.focus();
return;
// 写接口等其他逻辑
render() {
const { list } = this.state;
list.map(item=>{
<Input
ref={this[`input${item.key}Ref`]}
value={item.value}
onChange={() => { this.handleChange(item.key) }}
<Button type="primary" onClick={this.handleSave}>保存</Button>
handleChange = (key) => { this[`input${key}Ref`] = React.createRef();}handleSave = () => { const { list } = this.state; for (let item of list) { if (item.value && item.value.length > 100) { Toast.show(`${i.
const [sss, setsss] = useState(9)
const refs = [] //存储ref的数组
const [ren, setRen] = useState([
通过React.createRef → ref对象
通过元素的ref属性可以附加到React元素上
一般通过构造器中给this的属性赋值一个ref,方便整个组件使用
ref只要传递到react元素中,就可以利用ref的current属性访问到该真实DOM节点
ref在componentDidMount和componentDidUpdate触发前更新
current里是null的现象
由于打印时,this.modalRef才刚刚声明,current是null,但是current是个引用值,展开时访问的是.
// React动态创建ref
const [refArr, setRefArr] = useState<React.RefObject<HTMLDivElement>[]>([]);
const dataList = [1, 2, 3, 4, 5];
// 创建一个新的数组来存储ref
const arr: React.RefObject<HTMLDivElement>[] = [];
// 动态创建ref
for (let i = ..