SolidJS与SolidStart中use、create开头函数的意义及特殊规则问询
SolidJS/SolidStart中
create与use前缀函数的区别 SolidJS和SolidStart里的这类命名是社区约定而非强制语法规则,但背后有清晰的语义区分,帮你快速理解它们的定位:
一、create开头:响应式原语的工厂函数
这类函数是用来创建独立响应式实体的“工厂”,核心特点:
- 不依赖组件上下文,可以在任意地方调用(组件内、工具文件、甚至全局代码里)
- 每次调用都会生成一个独立的实例,比如调用两次
createSignal()会得到两组互不干扰的get/set函数 - 典型例子:
createSignal、createEffect、createMemo、createQuery,它们的作用是生成响应式变量、副作用、计算值这类可复用的响应式单元
二、use开头:组件上下文绑定的Hook
这类函数的语义和React Hook对齐,核心特点:
- 依赖当前组件的执行上下文,必须在组件内部调用(比如
useLocation需要访问当前路由的上下文,useParams需要获取当前路由的参数) - 虽然Solid没有React那样严格的Hook调用规则(比如禁止在条件分支里调用),但这类函数通常隐含了“和当前组件生命周期/环境绑定”的语义,建议遵循React的Hook调用习惯,避免踩坑
- 典型例子:
useLocation、useParams、useContext,都是用来获取组件所处环境的特定信息
三、总结:怎么选?
- 如果需要创建可复用的响应式单元(不管在哪里用),用
create前缀的函数 - 如果需要访问组件专属的上下文、路由、生命周期相关的信息,用
use前缀的函数
内容的提问来源于stack exchange,提问作者kaan_atakan
相关产品推荐
相关产品推荐

