import React, {
useRef,
useImperativeHandle,
useState,
forwardRef
} from "react";
function Son(props, ref) {
console.log(props);
const inputRef = useRef(null);
const [inputValue, setInputValue] = useState("");
useImperativeHandle(
ref,
() => {
const handleRefs = {
/* 聲明方法用于聚焦input框 */
onFocus() {
inputRef.current.focus();
},
/* 聲明方法用于改變input的值 */
onChangeValue(value) {
setInputValue(value);
}
};
return handleRefs;
},
[]
);
return (
<div>
<input placeholder="請輸入內容" ref={inputRef} value={inputValue} />
</div>
);
}
const ForwarSon = forwardRef(Son);
const Index = () => {
let inputRef = null;
const handerClick = () => {
const { onFocus, onChangeValue } = inputRef;
onFocus();
onChangeValue("let us learn React!");
};
return (
<div style={{ marginTop: "50px" }}>
<ForwarSon
ref={(node) => {
inputRef = node;
}}
/>
<button onClick={handerClick}>操控子組件</button>
</div>
);
};
// class Index extends React.Component {
// inputRef = null;
// handerClick() {
// const { onFocus, onChangeValue } = this.inputRef;
// onFocus();
// onChangeValue("let us learn React!");
// }
// render() {
// return (
// <div style={{ marginTop: "50px" }}>
// <ForwarSon ref={(node) => (this.inputRef = node)} />
// <button onClick={this.handerClick.bind(this)}>操控子組件</button>
// </div>
// );
// }
// }
export default Index;
在React中使用 useImperativeHandle 和 forwardRef 操作子組件
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關閱讀更多精彩內容
- 如題,使用react hooks實現(xiàn)使用redux的效果,主要用到的鉤子就是 useReducer, useCon...
- 最近我在學習 React.js 框架,在此記錄一下我使用 react-router-dom 來實現(xiàn)單頁應用(SPA...
- 在React中使用antd組件中的treeSelect組件,想要在獲取當前選中節(jié)點的所有子節(jié)點。在使用onChan...
- 通過ceact-react-app搭建的React項目,在使用antd-mobile組件庫中的Carousel(跑...
- 需求: 在一個table組件中使用DatePicker組件編輯當前條信息其中里面包含了時間,在我直接用的時發(fā)現(xiàn)如圖...