首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React Autosuggest onSuggestionSelected -获取选定选项

React Autosuggest onSuggestionSelected -获取选定选项
EN

Stack Overflow用户
提问于 2019-12-02 10:42:56
回答 1查看 1.8K关注 0票数 1

我刚开始使用React,并且一直在使用React Autosuggest (我喜欢它),我已经实现了99%。

也就是说,我根本不知道如何使用onSuggestionSelected获得用户最终选择的值:

https://github.com/moroshko/react-autosuggest#on-suggestion-selected-prop

我的代码基于文档中的这个非常简单的示例:

https://github.com/moroshko/react-autosuggest/blob/master/demo/src/components/App/components/Examples/components/Basic/Basic.js

任何帮助都将不胜感激。

下面是我当前的代码:

=========================================

代码语言:javascript
复制
import Autosuggest from 'react-autosuggest';
import schoolnames from '../data/SchoolNames';

const getSuggestions = value => {
    const inputValue = value.trim().toLowerCase();
    const inputLength = inputValue.length;
    return inputLength === 0 ? [] : schoolnames.filter(school =>
        school.name.toLowerCase().slice(0, inputLength) === inputValue
    );
};

const getSuggestionValue = suggestion => suggestion.name;
const renderSuggestion = suggestion => (
    <div>
    {suggestion.name}
    </div>
);

const onSuggestionSelected = suggestion => {
    console.log('ping... ', suggestion)
}


class SchoolNameLookup extends React.Component {

    constructor() {
        super();

        this.state = {
            value: '',
            suggestions: []
        };
    }

    handleChange = (event, { newValue }) => {
        this.setState({ value: newValue });
    };

    onChange = (event, { value }) => {
        alert(value)
    };

    onSuggestionsFetchRequested = ({ value }) => {
        this.setState({
            suggestions: getSuggestions(value)
        });
    };

    onSuggestionsClearRequested = () => {
        this.setState({
            suggestions: []
        });
    };

    render() {
        const { value, suggestions } = this.state;

        const inputProps = {
            placeholder: 'Type a School Name...',
            value: value,
            onChange: this.handleChange
        };

        return (

            <div>

                <Autosuggest id="SchoolNameLookup"
                    suggestions={suggestions}
                    onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}
                    onSuggestionsClearRequested={this.onSuggestionsClearRequested}
                    getSuggestionValue={getSuggestionValue}
                    renderSuggestion={renderSuggestion}
                    onSuggestionSelected={onSuggestionSelected}
                    inputProps={inputProps}
                />

            </div>



        );
    }
}



export default SchoolNameLookup
EN

回答 1

Stack Overflow用户

发布于 2019-12-02 14:07:45

代码语言:javascript
复制
import React from 'react';
import Autosuggest from 'react-autosuggest';

const schoolnames = [{
    id:1,
    name: 'test',
},{
    id:2,
    name: 'test2',
},{
    id:4,
    name: 'test4',
},{
    id:3,
    name: 'test3',
}]

const getSuggestions = value => {
    const inputValue = value.trim().toLowerCase();
    const inputLength = inputValue.length;
    return inputLength === 0 ? [] : schoolnames.filter(school =>
        school.name.toLowerCase().slice(0, inputLength) === inputValue
    );
};

const getSuggestionValue = suggestion => suggestion.name;
const renderSuggestion = suggestion => (
    <div>
    {suggestion.name}
    </div>
);

class SchoolNameLookup extends React.Component {

    constructor() {
        super();

        this.state = {
            value: '',
            suggestions: []
        };
    }

    onSuggestionSelected = (event, { suggestion, suggestionValue, index, method }) => {
        event.preventDefault();
        console.log('ping... ', suggestion)
    }

    handleChange = (event, { newValue }) => {
        this.setState({ value: newValue });
    };

    onChange = (event, { value }) => {
        alert(value)
    };

    onSuggestionsFetchRequested = ({ value }) => {
        this.setState({
            suggestions: getSuggestions(value)
        });
    };

    onSuggestionsClearRequested = () => {
        this.setState({
            suggestions: []
        });
    };

    render() {
        const { value, suggestions } = this.state;

        const inputProps = {
            placeholder: 'Type a School Name...',
            value: value,
            onChange: this.handleChange
        };

        return (
            <div>
                <Autosuggest id="SchoolNameLookup"
                    suggestions={suggestions}
                    onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}
                    onSuggestionsClearRequested={this.onSuggestionsClearRequested}
                    getSuggestionValue={getSuggestionValue}
                    renderSuggestion={renderSuggestion}
                    onSuggestionSelected={this.onSuggestionSelected}
                    inputProps={inputProps}
                />
            </div>
        );
    }
}

export default SchoolNameLookup;

试试这个方法。我取了样本数据,因为你没有提到数据。

你将在suggestion-ping控制台中获得整个对象。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59131997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档