echarts tooltip中使用react

  tooltip: {
  //......
    formatter: function (params: any) {
      setTimeout(() => {
        const root = document.getElementById('tool-tip')
        if(root) {
          ReactDOM.render(
            <div>{ params.data.name } : { params.data.value } </div>,
            root
          )
        }
      }, 0)
      return '<div id="tool-tip"></div>'
    }
  },
// ...

原理很簡單,就是調(diào)用ReactDOM.render去渲染jsx,這里稍微要注意下獲取root的時機,因為只有formatterecharts調(diào)用后才會被渲染,所以我們將react的渲染時機放在了下一個宏任務中,這樣就能確??梢垣@取到root元素。

這個方法并不能保證react或者echarts的所有特性都能實現(xiàn):

  1. 比如設置tooltip位置,不能用position回調(diào),因為這里用了setTimeout來渲染節(jié)點,所以在position回調(diào)里面無法獲取到渲染后的dom寬高, 當然可以提前寫死。
    我的解決方法是用css定位
    比如這樣
  transform: translate(-55%, -170%);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容