【发布时间】:2021-06-23 12:26:40
【问题描述】:
我有一个functional component 和一个d3 函数,它在挂载时将p 附加到ref
我正在尝试使用 useState 挂钩更改附加段落的文本内容
点击按钮
<button type="button" onClick={(e)=> setData("bar")}>change data</button>
触发重新渲染,而不是更改 p 标签的文本,而是创建一个新版本的 d3 函数 --> 附加一个新的 p
阅读How to rerender when refs change建议使用useCallback钩子
我不确定如何实施
如何在不创建新段落的情况下重新渲染段落?
import {useEffect, useState, useRef} from 'react'
import * as d3 from 'd3'
function DomReference() {
const domRef = useRef()
const [data, setData] = useState("foo")
useEffect(()=>{
d3.select(domRef.current)
.append('p')
.text(data)
// re-render --> creates a new function
}, [data])
return (
<div ref={domRef}>
<button type="button" onClick={(e)=> setData("bar")}>change data</button>
</div>
)
}
export default DomReference
【问题讨论】:
标签: javascript reactjs dom d3.js react-hooks