React 六角学院-学习笔记(React Hooks)

React Hook(useState, useEffect...等)

在React中 函式内一般变数若更新 画面上不会跟着更动 所以要用useState等方法,就可以连动画面

function App() {  const [count, setCount] = useState(0); //写成 let count = 0 数字就不会动  return (    <>      {count}      <button        type="button"        onClick={() => {          setCount(count + 1);        }}      >        {count}      </button>    </>  );}

useState 在input的应用(onChange) [button 中用onClick]

function App() {  const [text, settext] = useState(0);  return (    <>      {text} {/*渲染到画面上*/}      <input        type="text"        value={text}        onChange={(e) => {          //onChange => 如果input有改变 进行{}内的动作          settext(e.target.value); //将input输入的内容更新至text的值,且会渲染到画面上        }}      />    </>  );}

useState 注意事项

const [text, settext] = useState(0)
1.不可直接用array.push or pop 等方法直接更动变数text
2.需使用setText去变更
3.不要放在if等判断式中以防出错 建议放在元件最上层

useEffect 生命週期(触发条件)

useEffect(() => {}); //任何更新都触发useEffect(() => {}, []); //只有初始化触发一次useEffect(() => {}, [count]); //更动count就触发

useEffect + setInterval

const [arr, setArr] = useState([]);function mergeArrayData() {    const newArray = [{ num: 1 }, { num: 2 }, { num: 3 }];    setArr((pre) => [...pre, ...newArray]); //不可写成set([...arr, ...newArray]) => button可用  }  useEffect(() => {    setInterval(() => {      mergeArrayData();    }, 1000);  }, []);}

bootstrap 取得DOM 在 useEffect

及 //useRef(避免重複render[渲染])的写法

let myModal;function App() {               //+  const modalRef = useRef(null);  const openModal = () => {     myModal.show();  };  useEffect(() => {    myModal = new bootstrap.myModal("#newModal");     //myModal = new bootstrap.myModal(modalRef.current);  });  return (    <>      <button onClick={openModal}>Open</button>      <div id="newModal"></div>  //<div ref={modalRef}></div>    </>  );}

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章