面试题答案
一键面试- 首先,在Solid.js中创建上下文并共享状态的步骤如下:
- 使用
createContext
创建一个上下文对象。 - 在父组件中通过
createSignal
创建状态,并将状态和更新函数通过上下文传递下去。 - 子组件使用
useContext
来获取上下文的值。
- 使用
以下是代码示例:
import { createContext, createSignal, useContext } from "solid-js";
// 创建上下文
const MyContext = createContext();
const Child1 = () => {
const context = useContext(MyContext);
const [, setValue] = context;
return (
<button onClick={() => setValue(v => v + 1)}>
更新状态
</button>
);
};
const Child2 = () => {
const context = useContext(MyContext);
const [value] = context;
return (
<div>
当前状态值: {value()}
</div>
);
};
const App = () => {
const [count, setCount] = createSignal(0);
return (
<MyContext.Provider value={[count, setCount]}>
<Child1 />
<Child2 />
</MyContext.Provider>
);
};
export default App;
在上述代码中:
- 首先通过
createContext
创建了MyContext
。 App
组件中使用createSignal
创建了count
状态和setCount
更新函数,并通过MyContext.Provider
将它们作为数组[count, setCount]
传递下去。Child1
组件通过useContext
获取上下文,解构出setCount
并在按钮点击时更新状态。Child2
组件同样通过useContext
获取上下文,解构出count
并显示当前状态值。