我经常在 CompositionAPI 中看到一种使用 props 的模式,即使用 toRefs 来创建 props 的所有条目ref。我对此有点困惑。
例如,来自 Vue 3 官方指南:
export default {
props: {
user: {
type: String,
required: true
}
},
setup(props) {
const { user } = toRefs(props)
//... use user's value
}
}
Run Code Online (Sandbox Code Playgroud)
我有两个场景的两个问题:
当 props.user 已经是反应性的时,
如果它在任何祖先中发生变化,它的值也会改变,那么为什么我们需要使用toRefs?不是已经反应过来了吗?
如果它不是响应式的,那么它只是一个原始字符串值。
使其响应式是否意味着我们要更改它的值?我认为使对象具有反应性也意味着它的值值得改变。但所有指南和 linter 都警告我们最好不要更改 props 值。(不要写入计算值或其他值)
如果我可以直接在组件中更改 props 值,我不再需要每次都向父组件发出更改。这很方便,但我不知道在我们确定它变为反应性后,何时更改 props 值是个好主意?
我很高兴能够使用 Rails7,尤其是我们终于摆脱了 webpacker。然而,今天当我尝试尝试 Rails7 时,我不再了解如何捆绑 javascript 脚本......并且那里没有教程或者我只是找不到它。
例如,我想导入 jquery 所以我运行
yarn add jquery
Run Code Online (Sandbox Code Playgroud)
然后我写道:
// application.js
//importmap-rails
import "@hotwired/turbo-rails"
import "controllers"
import jquery from 'jquery'
Run Code Online (Sandbox Code Playgroud)
但它不起作用,然后我阅读了importmap-rails上的自述文件,然后运行
./bin/importmap pin jquery
Run Code Online (Sandbox Code Playgroud)
然后它添加了一行config/importmap.rb
pin "jquery", to: "https://ga.jspm.io/npm:jquery@3.6.0/dist/jquery.js"
Run Code Online (Sandbox Code Playgroud)
它有效,但是,这并不是我所期望的。我希望 jquery 来自node_modules/而不是 CDN
我怎样才能做到这一点?导入我从yarn/npm安装的npm包?或者只是指出我在哪里可以找到有关如何在 Rails7 中使用 javascript 的文档?
真的很奇怪,当我使用 File.exist 时?或 File.exists?我发现它不区分大小写?
2.7.0-preview1 :001 > Dir.entries('.')
=> [".", "..", "ppp", "FOO", "Bar"]
2.7.0-preview1 :002 > File.exist? "foo"
=> true
2.7.0-preview1 :003 > File.exist? "FOO"
=> true
2.7.0-preview1 :004 > File.exist? "FOOBAR"
=> false
2.7.0-preview1 :005 > File.exists? "FOO"
=> true
2.7.0-preview1 :006 > File.exists? "foo"
=> true
Run Code Online (Sandbox Code Playgroud)
我如何做区分大小写的 File.exist?? 我使用的是 macOS Catalina 10.15.3
更新
对于@Stefan 问题:我为什么要问这个问题,我只是在练习本书中的代码片段 - Ruby Cookbook ver.2,配方是批量重命名文件,如下所示:
require 'find'
module Find
def rename(*paths)
unrenamable = []
find(*paths) do |file|
next unless File.file? file # skip …Run Code Online (Sandbox Code Playgroud) 像 javascript 的 Promise.all 可以等待所有请求完成,然后执行以下工作。
例如,我有 A、B、C 任务:
C 需要 A 和 B 都完成运行并使用 A 和 B 计算的结果。
(因为 3 个进程都是非常昂贵的计算,所以它们被放在 sidekiq 队列中运行)