面试题答案
一键面试思路
- 拆分组件:将复杂组件结构拆分成更小、职责更单一的组件。这样,状态变化频繁的子组件可以独立于其他组件,其状态变化不会影响到无关部分。
- 使用响应式数据:在Solid.js中,使用
createSignal
创建响应式数据。只有依赖了这些响应式数据的部分才会在数据变化时重新渲染。 - 局部作用域:通过合理使用作用域,将状态和副作用限制在需要的组件范围内,避免不必要的重新渲染。
核心代码片段
import { createSignal, render } from 'solid-js';
// 创建状态
const [count, setCount] = createSignal(0);
// 频繁变化的子组件
const FrequentChangeComponent = () => {
const increment = () => setCount(count() + 1);
return (
<div>
<p>Count: {count()}</p>
<button onClick={increment}>Increment</button>
</div>
);
};
// 无关子组件
const UnrelatedComponent = () => {
return <p>This is an unrelated component</p>;
};
// 父组件
const App = () => {
return (
<div>
<FrequentChangeComponent />
<UnrelatedComponent />
</div>
);
};
render(() => <App />, document.getElementById('app'));
在上述代码中,FrequentChangeComponent
内部状态count
的变化只会触发FrequentChangeComponent
自身的重新渲染,而UnrelatedComponent
不会受到影响。因为UnrelatedComponent
并没有依赖count
这个响应式数据。