5
訪問孩子的方法,我有一個Editor
組件,它看起來像這樣:陣營-JS:通過HOC包裝
class EditorComp extends Component {
focus() {
this.refs.input.focus();
}
render() {
return (
<input
ref="input"
...
/>
);
}
}
,使得使用EditorComp
元素可以設置一個引用並調用其focus
方法和應用重點下級輸入,像這樣:
class Parent extends Component {
render() {
return (
<div>
<button onClick={() => this.refs.editor.focus()}>Focus</button>
<EditorComp ref="editor" />
</div>
);
}
}
然而,在高階組件包裝EditorComp
時(像react-redux
的connect()
)的EditorComp
失去因爲它被困在HOC下方。
例子:
const WrappedEditor = connect()(EditorComp); // react-redux's connect, for example
const wrappedEditorInstance = <WrappedEditor />;
wrappedEditorInstance.focus() // Error! Focus is not a function.
有沒有辦法通過一個孩子組件的父肝卵圓細胞失之交臂方法或組件引用?
編輯:或者是否存在一種相反的解決方案,在這種解決方案中,父母手執了一個設置焦點命令的功能?我考慮過使用event-emitter
,讓孩子聽父母所調用的focus
事件,但這看起來很笨重和不必要。
感謝您的回答! '1 way return comp instance'接近完美,但它看起來像'2路傳遞位置'可能無法按預期工作。只要'this.props.isfocus === true','EditorComp'就會在任何時候更新它。這可能可以解決,但應該指出。 再次感謝! –