如何:semantic-ui-react dropdown 将下拉选择分配给其他组件

How To: semantic-ui-react drop down passing drop-down selection to other component

我有一个父组件 (App),它使用两个子组件 ChartArtists

Artists 组件是使用 semantic-ui-react 库创建的下拉列表。

我想做的是将下拉列表放入其自己的组件 (Artists) 中,当更改时,将更改父组件中的 artist 状态 (App) 然后 App 中的 artist 状态可以作为 artist 属性传递给 Chart 组件

到目前为止一切正常,只是下拉菜单看起来很奇怪(选项在下拉框之外:如下图)。我不确定我的设置是否正确。

应用程序组件:

import './App.css';
import Chart from './Chart.js';
import {useState} from 'react';
import Artists from './Artists.js';

const artistOptions = [
  {
    text: 'Bruno Mars',
    value: 'Bruno Mars'
  },
  {
    text: 'Billie Eilish',
    value: 'Billie Eilish'
  }
  ...
]

export default function App() {

  const [artist, setArtist] = useState('Bruno Mars');

  const handleArtistChange = (artist) => {
    setArtist(artist);
  }

  return (
    <div className="App">
      <h2>Awards for {artist}</h2>
      <Artists options={artistOptions} onArtistChange={handleArtistChange}/>
      <Chart data={data} height={150} width={960} show={"Grammys"} artist={artist} />
    </div>
  );

}

艺术家部分:

import React from 'react';
import {Dropdown} from 'semantic-ui-react'

export default function Artists (props) {

    const handleOnChange = (e, data) => {
        props.onArtistChange(data.value);
    }

    return(
        <Dropdown placeholder='placeholder' search selection options={props.options} onChange={handleOnChange} />
    )
}

解决方案

出现此问题是因为您显然还没有将 CSS 添加到 HTML 样式。

添加:

https://cdn.jsdelivr.net/npm/semantic-ui/dist/semantic.min.css

作为您的反应的样式表 index.html。

沙盒:

这里有一个沙盒可以更好地帮助您:

https://codesandbox.io/s/semantic-ui-example-forked-mv3bv?file=/index.js