Skip to content

streamlit-component-lib-react-hooksを公式ライブラリに置き換える #3

Description

@j4rviscmd

概要

streamlit-component-lib-react-hooksライブラリがStreamlitの再レンダリングサイクルと競合し、以下の問題を引き起こしている可能性がある:

  1. 行選択時に他のコンポーネントが白画面になる(ウィンドウリサイズで回復)
    • 画面サイズを変更すると解消する
  2. Received component message for unregistered ComponentInstance! の警告
Image

提案

streamlit-component-lib-react-hooksを削除し、公式のstreamlit-component-libを直接使用する。

現在の実装

import { useRenderData } from 'streamlit-component-lib-react-hooks'

function MyComponent() {
  const renderData = useRenderData()
  // ...
}

提案する実装

import { Streamlit, RenderData } from 'streamlit-component-lib'

function MyComponent() {
  const [renderData, setRenderData] = useState<RenderData | null>(null)

  useEffect(() => {
    const onRender = (event: Event) => {
      setRenderData((event as CustomEvent).detail)
    }
    Streamlit.events.addEventListener(Streamlit.RENDER_EVENT, onRender)
    Streamlit.setComponentReady()
    return () => {
      Streamlit.events.removeEventListener(Streamlit.RENDER_EVENT, onRender)
    }
  }, [])

  if (!renderData) return null
  // ...
}

期待される効果

  • コンポーネントライフサイクルの制御性向上
  • 白画面問題の解消
  • 警告メッセージの削減

関連

  • 白画面問題はウィンドウリサイズで回復するため、iframe高さ計算のタイミング問題と関連

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingenhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions