Livewire wire:show 指令完全指南用 CSS 控制元素显示隐藏告别服务器往返【免费下载链接】livewireA full-stack framework for Laravel that takes the pain out of building dynamic UIs.项目地址: https://gitcode.com/gh_mirrors/li/livewirewire:show是 Livewire 提供的响应式显示/隐藏指令它通过切换元素的 CSSdisplay属性来控制可见性而不是像 Blade 的if那样把元素从 DOM 中彻底移除。本文基于 docs/wire-show.md 展开结合仓库前端源码与浏览器测试讲解wire:show的基本用法、过渡动画配合、表达式书写规则以及底层实现原理帮助你用零网络往返的方式实现弹窗、错误提示、条件区域等常见 UI 交互。与if的本质区别CSS 隐藏 vs DOM 移除理解wire:show的价值首先要对比它和 Bladeif的差异if是服务端渲染期的分支条件为假时元素根本不会出现在最终 HTML 中条件变化必须发起一次服务器往返重新渲染整个组件。wire:show是客户端的响应式切换元素始终留在页面 DOM 中只是通过 CSSdisplay: none被隐藏。切换可见性不需要服务器往返因而动画更平滑、交互更即时。这一点在原文档中明确说明也是wire:show适合构建弹窗、折叠面板、错误提示等高频切换场景的根本原因。基本用法构建一个新建文章弹窗原文档给出的典型场景是新建文章Create Post模态框。组件端用一个布尔属性showModal控制弹窗开关并在保存成功后将其复位use Livewire\Component; use App\Models\Post; class CreatePost extends Component { public $showModal false; public $content ; public function save() { Post::create([content $this-content]); $this-reset(content); $this-showModal false; } }视图端把wire:showshowModal放在弹窗外层用 Alpine 的x-on:click配合$wire.showModal true直接修改组件属性——这个赋值发生在浏览器端不会触发请求div button x-on:click$wire.showModal trueNew Post/button div wire:showshowModal form wire:submitsave textarea wire:modelcontent/textarea button typesubmitSave Post/button /form /div /div交互链路是点击New Post按钮 →$wire.showModal true在客户端立即生效 → 弹窗无服务器往返地出现提交表单触发save()服务端方法 → 保存成功后$this-showModal false→ 下一次响应回传时弹窗隐藏、表单内容被reset(content)清空。结合 Alpine.js 过渡动画实现平滑显隐因为wire:show只切换 CSSdisplay属性元素本身始终存在于 DOM 中所以 Alpine 的x-transition指令可以与之无缝配合。在原文档示例中只需在带wire:show的元素上追加x-transition.duration.500ms即可获得淡入淡出加缩放的过渡效果div button x-on:click$wire.showModal trueNew Post/button div wire:showshowModal x-transition.duration.500ms form wire:submitsave textarea wire:modelcontent/textarea button typesubmitSave Post/button /form /div /divx-transition是 Alpine 内置指令支持.duration.500ms、.opacity、.scale、.origin-top等大量修饰符组合仓库本身即依赖 Alpine.js见 package.json 与 js/index.js 的集成方式读者可按需查阅 Alpine 官方过渡指令文档。表达式书写规则属性名、!取反与$errorswire:show的值是一段响应式表达式在浏览器端被实时求值。可以从仓库测试中提炼出以下关键规则1. 直接引用组件属性wire:showshowModal中裸写属性名即可Livewire 会自动把它解析为组件上的属性见下文实现原理。2. 支持!逻辑取反测试 SupportWireShow/BrowserTest.php 验证了两种写法都合法{{-- 无空格取反 --}} div wire:show!showHello/div {{-- 取反符号与表达式之间允许空格 --}} div wire:show! showHello/div3. 可结合 Livewire 的魔术属性例如在 SupportMagicErrors/BrowserTest.php 中wire:show被用来按校验错误状态显示提示区域div wire:show$errors.has(email) duskemail-error !-- 邮箱校验失败时显示的提示 -- /div$errors是 Livewire 暴露的魔术属性这里演示了wire:show不仅限于简单布尔属性还可以接受更复杂的表达式。4. 不能用来调用服务端方法wire:show属于响应式绑定其表达式只在浏览器端求值不会发起网络请求。测试test_wire_show_does_not_call_server_methods见 SupportWireShow/BrowserTest.php专门验证了这一点把服务端方法名visible直接写进wire:showvisible不会触发调用。这与 js/$wire.js 中无法从 wire:text、wire:show、wire:bind 这类响应式绑定中调用服务器方法的警告一致。源码级原理wire:show如何变成 Alpine 的x-show从实现看wire:show是 Livewire 对 Alpinex-show指令的一层封装。核心代码位于 js/directives/wire-show.jsimport { evaluateReactiveExpression } from ../evaluator import Alpine from alpinejs Alpine.interceptInit(el { for (let i 0; i el.attributes.length; i) { if (el.attributes[i].name.startsWith(wire:show)) { let { name, value } el.attributes[i] let modifierString name.split(wire:show)[1] let expression value.trim() Alpine.bind(el, { [x-show modifierString]() { return evaluateReactiveExpression(el, expression) } }) } } })这段代码揭示了三个重要事实指令名拼接name.split(wire:show)[1]会把wire:show之后的部分原样拼到x-show后面。因此wire:show.importantshow实际编译为 Alpine 的x-show.important。测试test_wire_show_supports_the_important_modifierSupportWireShow/BrowserTest.php验证了.important修饰符生效时会生成display: none !important;的内联样式。原文档称该指令没有修饰符但从当前仓库实现看修饰符会被透传给 Alpine 的x-show机制。响应式求值表达式通过evaluateReactiveExpression求值而不是普通的 action 求值。在 js/evaluator.js 中evaluateReactiveExpression会设置一个正在求值响应式表达式的深度标记配合contextualizeExpressionjs/evaluator.js把裸写的标识符自动加上$wire.前缀——这就是wire:showshowModal中直接写属性名即可的原因。Alpine 作用域隔离contextualizeExpression会收集元素到组件根节点之间已有的 Alpine 作用域键并跳过前缀化处理避免把外层 Alpine 变量误解析成组件属性见 js/evaluator.js 的getAlpineScopeKeys保证表达式解析不会跨组件边界泄漏。行为验证仓库测试覆盖了哪些场景src/Features/SupportWireShow/BrowserTest.php 作为 Dusk 浏览器测试完整覆盖了wire:show的核心行为可作为理解语义的权威参考测试方法验证的行为test_wire_show_toggles_element_visibility属性为true时元素可见点击切换后隐藏test_wire_show_does_not_display_elements_when_property_is_initially_false初始为false时元素不显示切换后出现test_wire_show_supports_the_not_operator_before_the_expression支持!show取反写法test_wire_show_supports_the_not_operator_with_a_space_before_the_expression支持! show带空格写法test_wire_show_supports_the_important_modifier.important修饰符生效生成display: none !important;test_wire_show_does_not_call_server_methods表达式不会触发服务端方法调用不会产生请求这些测试还演示了与wire:click$toggle(show)的配合方式$toggle是 Livewire 内置的魔术方法可以在服务端翻转布尔属性适合作为切换按钮的语义化写法。参考语法速查wire:showexpression表达式组件属性名、!取反表达式、或$errors等魔术属性表达式在浏览器端实时求值修饰符原文档标注该指令无专属修饰符从源码实现看修饰符会被透传给 Alpine 的x-show如.important行为与 Alpine 一致网络行为纯客户端响应式绑定求值不产生服务器请求过渡动画与 Alpinex-transition直接叠加使用即可获得平滑显隐效果。【免费下载链接】livewireA full-stack framework for Laravel that takes the pain out of building dynamic UIs.项目地址: https://gitcode.com/gh_mirrors/li/livewire创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
智能客服选型指南:四维评估与核心产品对比 1. 智能客服行业现状与选型痛点2026年的智能客服市场已经进入深度整合期,头部云服务商与垂直领域解决方案提供商形成了明显的竞争格局。根据第三方调研数据显示,企业客服系统智能化渗透率已达到78%,其中采用云端智能客服解决方案的比例占到了… · 2026/9/20 23:44:11
Hermes Agent 完整指南:拆解它的工具调用循环,5 分钟看懂它怎么自己把活干完 Hermes Agent 完整指南:拆解它的工具调用循环,5 分钟看懂它怎么自己把活干完 【免费下载链接】hermes-agent The agent that grows with you 项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent
Hermes Agent 是一个能接多家模型后端… · 2026/9/20 23:44:11
phpmysql购物网站开发2026最新 PHP MySQL购物网站开发图解步骤避坑指南 改个需求建站公司拖一周,这种憋屈事儿谁还没遇到过?很多中小企业主找外包做 PHP MySQL 购物网站,合同签了,代码交付了,结果想改个按钮颜色、加个优惠券逻辑,对方要么报价翻番,要么排期排到下个月。这根本不是因为技术难,而是你不懂这套技术栈的底层逻辑… · 2026/9/21 6:44:17
seo是什么岗位的缩写?5步拆解求职与建站成本对比评测 seo是什么岗位的缩写?5步拆解求职与建站成本对比评测 别被那些花里胡哨的模板站忽悠了,看着挺像回事,其实打开速度慢得让人想砸键盘,更别提搜索排名了。很多老板花了几千块买个模板,结果百度搜自家品牌名都排不到首页,这就是典型的“为了省小钱,丢了大生意”。 今天咱们不整虚的,直接聊聊… · 2026/9/21 6:31:13
群辉做网站服务器配置对比评测:3个维度避开高价坑 群辉做网站服务器配置对比评测:3个维度避开高价坑 找建站公司最怕被坑高价,尤其是听到“高配服务器”就懵圈。很多老板在选群辉做网站服务器配置时,往往被销售话术绕晕,最后花了云服务器顶配的钱,结果网站还是打不开。… · 2026/9/21 6:18:01
i网站建设踩坑实录:被黑后选哪家更靠谱 i网站建设踩坑实录:被黑后选哪家更靠谱 上周凌晨三点,我的手机疯狂震动。客户在群里@我,说官网突然弹出一堆博彩广告,百度一搜全是挂马链接。那一刻,冷汗直接下来了。… · 2026/9/21 6:04:19
php做网站页面在哪做一文搞懂避坑指南 php做网站页面在哪做一文搞懂避坑指南 找建站公司报价三万八,回来一看还是套模板?很多甲方朋友在这一步就栽了跟头,怕被坑高价,又怕自己不懂技术被忽悠。别慌,今天咱们不聊虚的,直接拆解 php做网站页面在哪做 的底层逻辑, 一文搞懂… · 2026/9/21 5:48:20
Simulink与FlightGear联合仿真:飞行器控制算法三维可视化验证平台搭建 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 5:38:40
Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化 直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡… · 2026/9/21 0:02:39
Word表格编号全攻略:从列表编号到题注交叉引用 写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技… · 2026/9/21 0:02:39
从第一个站到第二个站:独立开发者的静态网站选型与落地实践 1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&… · 2026/9/20 0:00:41
agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and … · 2026/9/21 0:00:18
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,… · 2026/9/21 0:00:18