useState
语法:const [n, setN] = React.useState(0);
0是n的默认值,setN是操作n的函数
setN:
- 我们以为setN会改变n,但是事实往往出乎意料,n并不会变,他是将改变后的数据存到一个数据里面(具体在哪里我们先定为x),而不是直接赋值去改变n
- setN一定会触发组件的重新渲染
useState:
- useState肯定会从x那里,读取到n的最新值
x:
- 每个组件都有自己的x,这个x我们命名为state
useRef
语法:
const nRef = React.useRef(0);
nRef.current(表示当前的值)
nRef.current:
- 当值改变了不会重新render
useContext
const themeContext = React.createContext(null);
function App() {
const [theme, setTheme] = React.useState("red");
return (
// themeContext.Provider 创建一个局部作用域
// 其中里面的所有组件都可以使用setTheme这个函数
<themeContext.Provider value={{ theme, setTheme }}>
<div className={`App ${theme}`}>
<p>{theme}</p>
<div>
<ChildA />
</div>
<div>
<ChildB />
</div>
</div>
</themeContext.Provider>
);
}
function ChildA() {
// ChildA这个子组件内部想使用父组件setTheme函数的方式
const { setTheme } = React.useContext(themeContext);
return (
<div>
<button onClick={() => setTheme("red")}>red</button>
</div>
);
}
发表回复