面试题答案
一键面试- 初始化项目:
- 确保你已经创建了一个Qwik项目。如果没有,可以使用
npm create qwik@latest
命令创建。
- 确保你已经创建了一个Qwik项目。如果没有,可以使用
- 安装必要依赖:
- 在Qwik项目中,
useStore
是@builder.io/qwik
库的一部分,一般项目创建时已安装。如果没有,可运行npm install @builder.io/qwik
。
- 在Qwik项目中,
- 实现计数器状态持久化:
- 初始化计数器值:
- 在组件文件(例如
Counter.tsx
)中引入useStore
。
import { component$, useStore } from '@builder.io/qwik'; import { useLocalStorage } from '@builder.io/qwik-city'; const Counter = component$(() => { const initialValue = parseInt(useLocalStorage('counter', '0')) || 0; const store = useStore({ count: initialValue }); return ( // 组件返回内容 ); }); export default Counter;
- 在组件文件(例如
- 增加计数器值:
- 在组件中添加一个按钮,点击按钮增加计数器的值,并更新
localStorage
。
import { component$, useStore } from '@builder.io/qwik'; import { useLocalStorage } from '@builder.io/qwik-city'; const Counter = component$(() => { const initialValue = parseInt(useLocalStorage('counter', '0')) || 0; const store = useStore({ count: initialValue }); const increment = () => { store.count++; useLocalStorage('counter', store.count.toString()); }; return ( <div> <p>Count: {store.count}</p> <button onClick={increment}>Increment</button> </div> ); }); export default Counter;
- 在组件中添加一个按钮,点击按钮增加计数器的值,并更新
- 减少计数器值:
- 类似地,添加一个按钮,点击按钮减少计数器的值,并更新
localStorage
。
import { component$, useStore } from '@builder.io/qwik'; import { useLocalStorage } from '@builder.io/qwik-city'; const Counter = component$(() => { const initialValue = parseInt(useLocalStorage('counter', '0')) || 0; const store = useStore({ count: initialValue }); const increment = () => { store.count++; useLocalStorage('counter', store.count.toString()); }; const decrement = () => { if (store.count > 0) { store.count--; useLocalStorage('counter', store.count.toString()); } }; return ( <div> <p>Count: {store.count}</p> <button onClick={increment}>Increment</button> <button onClick={decrement}>Decrement</button> </div> ); }); export default Counter;
- 类似地,添加一个按钮,点击按钮减少计数器的值,并更新
- 确保状态在页面刷新后依然保持:
- 通过
useLocalStorage
钩子,在组件初始化时从localStorage
读取计数器的值作为初始值。 - 在每次计数器值变化(增加或减少)时,更新
localStorage
中的值。这样,当页面刷新时,组件重新初始化,从localStorage
读取到的依然是上次变化后的值,从而实现状态持久化。
- 通过
- 初始化计数器值: