使用 refs 将焦点放在动态生成的组件上
Set focus on dynamically generated components using refs
我必须创建一些动态引用,以便将焦点设置在自定义组件中包含的 Input
。
目前我是这样渲染元素的:
const countRow = denom => {
this[`${denom.id}-ref`] = React.createRef();
return (
<CountRow
ref={this[`${denom.id}-ref`]}
id={`${denom.name.singular.toLowerCase()}-${denom.id}`}
tenderValue={denom.value}
label={denom.denomination.label}
onChange={(e, value) => this.handleBillsOnChange(e, denom)}
onEnter={() => this.onEnter(denom)}
/>
}
{itterableArray.map(item => countRow(item)}
在我的 onEnterFunction
中,我正在尝试从一个 <CountRow />
移动到下一个。
在该函数的末尾:
onEnter = denom => {
//some stuff that doesn't matter
this[`${denom.id}-ref`].focus()
}
onEnter
函数的最后一行总是炸毁。说:
TypeError: _this["".concat(...)].focus is not a function
有人可以指导我需要做什么才能 select 专注于特定的 <CountRow />
吗?
例子
const countRow = denom => {
let ref=React.createRef();
let onEnter = () => {
ref.current.focus();
}
//setTimeout(onEnter,3000)
return (
<CountRow
ref={ref}
// id={`${denom.name.singular.toLowerCase()}-${denom.id}`}
// tenderValue={denom.value}
// label={denom.denomination.label}
// onChange={(e, value) => this.handleBillsOnChange(e, denom)}
onEnter={onEnter}
/>)
};
class CountRow extends React.Component {
constructor(props) {
super(props);
this.myRef=React.createRef();
this.focus=()=>this.myRef.current.focus();
}
render() {
return <input type="text" ref={this.myRef}/>
}
}
我必须创建一些动态引用,以便将焦点设置在自定义组件中包含的 Input
。
目前我是这样渲染元素的:
const countRow = denom => {
this[`${denom.id}-ref`] = React.createRef();
return (
<CountRow
ref={this[`${denom.id}-ref`]}
id={`${denom.name.singular.toLowerCase()}-${denom.id}`}
tenderValue={denom.value}
label={denom.denomination.label}
onChange={(e, value) => this.handleBillsOnChange(e, denom)}
onEnter={() => this.onEnter(denom)}
/>
}
{itterableArray.map(item => countRow(item)}
在我的 onEnterFunction
中,我正在尝试从一个 <CountRow />
移动到下一个。
在该函数的末尾:
onEnter = denom => {
//some stuff that doesn't matter
this[`${denom.id}-ref`].focus()
}
onEnter
函数的最后一行总是炸毁。说:
TypeError: _this["".concat(...)].focus is not a function
有人可以指导我需要做什么才能 select 专注于特定的 <CountRow />
吗?
例子
const countRow = denom => {
let ref=React.createRef();
let onEnter = () => {
ref.current.focus();
}
//setTimeout(onEnter,3000)
return (
<CountRow
ref={ref}
// id={`${denom.name.singular.toLowerCase()}-${denom.id}`}
// tenderValue={denom.value}
// label={denom.denomination.label}
// onChange={(e, value) => this.handleBillsOnChange(e, denom)}
onEnter={onEnter}
/>)
};
class CountRow extends React.Component {
constructor(props) {
super(props);
this.myRef=React.createRef();
this.focus=()=>this.myRef.current.focus();
}
render() {
return <input type="text" ref={this.myRef}/>
}
}