代码之家  ›  专栏  ›  技术社区  ›  beingalex

当数据来自服务器时如何使用react select

  •  0
  • beingalex  · 技术社区  · 6 年前

    弹出窗口.js

    import React from 'react';
    import ReactDOM from 'react-dom';
    
    import SourcesSelector from './sources-selector';
    
    class Popup extends React.Component {
    
        constructor(props) {
            super(props);
            this.state = {
                error: null,
                isLoaded: false,
                sources: []
            };
        }
    
        componentDidMount() {
            fetch("http://theserver/getdata.php")
                .then(res => res.json())
                .then(
                    (result) => {
                        this.setState({
                            isLoaded: true,
                            sources: result.sources
                        });
    
                    },
                    (error) => {
                    }
                )
        }
    
        render() {
            return (
                <div>
                    <SourcesSelector sources={this.state.sources}/>
                </div>
            );
        }
    }
    
    ReactDOM.render(<Popup/>, document.getElementById('app'));
    

    来源-选择器.js

    import React from 'react';
    import Select from 'react-select';
    
    export default class SourcesSelector extends React.Component {
    
    
        constructor(props) {
            super(props);
            this.state = {
                sources: props.values,
                selectedValues: []
            }
    
        }
        render() {
    
            return (
                <Select options={this.state.sources} />
            );
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Ankit Mehta    6 年前

    你可以使用“地图”功能。

    例如:

    import React from 'react';
    import Select from 'react-select';
    
    export default class SourcesSelector extends React.Component {
    
        constructor(props) {
            super(props);
            this.state = {
                sources: props.values,
                selectedValues: []
            }
    
        }
        render() {
           var sourcesOptions = '';
           if(this.state.sources.lenght>0){
              sourcesOptions = this.state.sources.map(function(option, index) {
                 return(<option value={option.value}>{option.label}</option>);
              });
            }
            return (
                <Select>
                  {sourcesOptions}
                </Select>
            );
        }
    }