react-redux 中的 ref 和 node 指的是啥?
Posted
技术标签:
【中文标题】react-redux 中的 ref 和 node 指的是啥?【英文标题】:What does ref and node refer to in react-redux?react-redux 中的 ref 和 node 指的是什么? 【发布时间】:2016-12-26 01:10:23 【问题描述】:我正在从 docs 学习 react-redux,但看不到下面的意思。 ref 部分指的是什么?和节点?从我看到的任何地方都没有使用这个参考。 ref 是否在渲染后引用 DOM 上的子组件节点(输入)?如果是这样,为什么不直接引用输入?
import React from 'react'
import connect from 'react-redux'
import addTodo from '../actions'
let AddTodo = ( dispatch ) =>
let input
return (
<div>
<form onSubmit=e =>
e.preventDefault()
if (!input.value.trim())
return
dispatch(addTodo(input.value))
input.value = ''
>
<input ref=node =>
input = node
/>
<button type="submit">
Add Todo
</button>
</form>
</div>
)
AddTodo = connect()(AddTodo)
export default AddTodo
【问题讨论】:
【参考方案1】:这是一个ref callback attribute,其目的是获得对 DOM 元素/类组件的“直接访问”。使用 ref 可以focus
输入框,直接获取它的值或者访问类组件的方法。
在这种情况下,它的目的是通过分配对输入变量(let input
)的引用来获取/更改输入的值 - 请参阅代码中的 cmets。
let AddTodo = ( dispatch ) =>
let input // the input variable which will hold reference to the input element
return (
<div>
<form onSubmit=e =>
e.preventDefault()
if (!input.value.trim()) // using the input variable
return
dispatch(addTodo(input.value)) // using the input variable
input.value = ''
>
<input ref=node =>
input = node // assign the node reference to the input variable
/>
<button type="submit">
Add Todo
</button>
</form>
</div>
)
【讨论】:
如果我不想使用 refs,我是否能够在某处传递调度函数并使用 onChange 作为输入触发它? 如果你只想要redux store中的值,你可以这样做——<input onChange= (e) => dispatch(addTodo(e.target.value))
。
那么使用 refs 有什么好处呢?
@mangocaptain 的好处是您可以通过参考访问表单提交的输入。您将如何访问表单提交时的输入?
在输入上使用 ref
是在 react-redux 应用程序上接受输入的最佳实践吗?以上是关于react-redux 中的 ref 和 node 指的是啥?的主要内容,如果未能解决你的问题,请参考以下文章
无法从“node_modules\react-redux\lib\index.js”解析“./utils/batch”