在构建我的应用程序时,我目睹了一些奇怪的行为,其中 dom 的一部分没有对输入做出正确的反应。突变正在注册,状态正在改变,但 DOM 中的 prop 没有。我注意到当我回去时,在 html 中编辑了一个新的空白行,然后回来了,它现在正在显示新的道具。但是我必须编辑,保存,然后返回文档才能看到状态的任何新更改。
所以状态正在更新,但 Vue 没有对变化做出反应。这就是为什么我认为原因:https : //vuejs.org/v2/guide/reactivity.html#For-Objects
Vue 无法检测属性的添加或删除。由于 Vue 在实例初始化期间执行 getter/setter 转换过程,因此数据对象中必须存在一个属性,以便 Vue 对其进行转换并使其具有反应性
有时您可能希望为现有对象分配多个属性,例如使用 Object.assign() 或 _.extend()。但是,添加到对象的新属性不会触发更改。在这种情况下,创建一个具有原始对象和 mixin 对象属性的新对象
我所在州的 Object 是js-libp2p. 每当libp2p实例执行某些操作时,我都需要定期更新状态中的对象。我是通过执行突变来做到这一点的
syncNode(state, libp2p) {
state.p2pNode = libp2p
}
Run Code Online (Sandbox Code Playgroud)
libp2p我试图通过更改 DOM 来响应的对象的当前实例在哪里state.p2pNode?我不能使用$set,这是用于单值编辑,我认为.assign或.extend不会工作,因为我正在尝试替换整个对象树。
为什么会有这个限制,是否有针对这个特定问题的解决方案?
我目前正在 rPi3B+ (aarch64) 上运行 openSuse,并且在运行 NodeJS 连接脚本时遇到了困难。
我完成了 PostgreSQL 的标准安装(v10 是此版本的 openSuse 上提供的),然后创建了一个新角色
CREATE ROLE new_role LOGIN PASSWORD 'passwd';
Run Code Online (Sandbox Code Playgroud)
然后是一个数据库
CREATE DATABASE new_db OWNER new_role;
Run Code Online (Sandbox Code Playgroud)
&\l返回\du预期的输出表明角色和数据库均已使用正确的所有者成功创建。
因此,我然后快速创建了一个节点项目目录并从文档复制了测试脚本: https: //node-postgres.com/features/connecting
const { Pool, Client } = require('pg')
const connectionString = 'postgresql://new_role:passwd@localhost:5432/new_db'
const pool = new Pool({
connectionString: connectionString,
})
pool.query('SELECT NOW()', (err, res) => {
console.log(err, res)
pool.end()
})
const client = new Client({
connectionString: connectionString,
})
client.connect()
client.query('SELECT NOW()', (err, res) => {
console.log(err, res)
client.end() …Run Code Online (Sandbox Code Playgroud)