小编sas*_*nov的帖子

如何通过 react-redux ,withRouter 在反应中使用 refs?

我正在尝试在连接到 react-redux 的组件中使用 ref

我试过这个解决方案。

connect(null, null, null, {forwardRef: true})(myCom)

<myCom ref={ref => this.myCom = ref} />

根据 react-redux 文档,这很好用,但是现在当我尝试使用

withRouter 同时我收到一个错误:

不能给函数组件提供 refs。尝试访问此引用将失败。你的意思是使用 React.forwardRef() 吗?

所以我尝试过的最终导出代码导致了上述错误

export default connect(null, null, null, { forwardRef: true })(withRouter(withStyles(styles)(myCom)));
Run Code Online (Sandbox Code Playgroud)

注意:withStyles 不会引起任何问题,因为我尝试仅删除 withRouter,问题已解决。

有没有办法解决这个问题?

reactjs material-ui react-redux react-router-dom

8
推荐指数
2
解决办法
6335
查看次数

如何使用 knexjs 更新 json 列中的对象键值?

我正在尝试更新 users 表中的列,列类型为json

列名称是测试。

该列由一个对象默认值组成,例如是

{a: "text", b: 0}

如何更新对象键b而不更改整个列

我正在使用的代码是

knexDb('users').where({
  email: email
})
.update({
  test: { b: 1 }
})
Run Code Online (Sandbox Code Playgroud)

第二种解决方案

knexDb('users').where({
  email: email
})
.update({
  test: knexDb.raw(`jsonb_set(??, '{b}', ?)`, ['test', 1])
})
Run Code Online (Sandbox Code Playgroud)

第一个解决方案更改整个列单元格,并且测试将仅{ b: 1 }

第二个解决方案不起作用,会出现错误

函数 jsonb_set(json, 未知, 未知) 不存在

预期结果

就是设法只更新对象中的某个键值而不更改整个对象。

聚苯乙烯

我还想更新一个由像上面这样的对象组成的数组。

[{a: "text", b: 0}, {c: "another-text", d: 0}]

如果我在 kenxjs 中使用上面的代码,它会将整个数组更新为仅{b: 1}

PS经过大量搜索后发现,为了使其工作,我需要将列类型设置为 jsonb,以便上面的 jsonb_set() 工作

但现在我面临另一个问题

如何使用 jsonb_set 更新多个密钥

knexDb('users').where({
      email: email
    }) …
Run Code Online (Sandbox Code Playgroud)

node.js knex.js

2
推荐指数
1
解决办法
5267
查看次数

如何将值从数组中的对象添加到另一个数组中的另一个对象?

我试图将对象值从一个数组添加到另一个数组中的另一个对象

第一个数组结构是:

var array1 = [
    { email: 'user1@example.com', status: 'offline' },
    { email: 'user2@example.com', status: 'online' },
    { email: 'user3@example.com', status: 'idle' }
]


var array2 = [
    { email: 'user1@example.com', status: '', activeTime: '1hr', logedIn: true, },
    { email: 'user1@example.com', status: '', activeTime: '1hr', logedIn: true, },
    { email: 'user1@example.com', status: '', activeTime: '1hr', logedIn: true, },
    { email: 'user2@example.com', status: '', activeTime: '2hr', logedIn: false, },
    { email: 'user2@example.com', status: '', activeTime: '2hr', logedIn: false, },
    { …
Run Code Online (Sandbox Code Playgroud)

javascript

1
推荐指数
1
解决办法
50
查看次数