Возникают проблемы с набором в фильтре, если заявление - несколько выпадающих - PullRequest
0 голосов
/ 11 мая 2018

Моя желаемая функциональность: раскрывающийся список 1 = раскрывающийся список местоположений 2 = навыки

, когда пользователь выбирает местоположение из раскрывающегося списка и навык из другого раскрывающегося списка, они будут представлены с результатами (в настоящее время это работает)

Но часть, с которой у меня проблемы, это "Все местоположения" и "Все навыки" [примечание]. Я не могу изменить данные, поскольку они поступают из API

. В настоящее время страница загружается без людей.(было бы неплохо, если бы по умолчанию были указаны все локации, на которых отображены все навыки), а в раскрывающихся списках заданы значения "Все локации" и "Все навыки", но я не знаю, как эти состояния означают что-либо,

или каксказать «Все места» означает, что вы смотрите на всех людей, или же на умения

любая помощь будет отличной. Вот где я до сих пор думаю, что это будет достигнуто приеще заявление, или несколько из них .. я не знаю, я начинаю путаться

 constructor(props) {
    super(props);
    this.state = {
      developers: [],
      filterCountry: "All locations",
      filterSkills: "All skills"
    };
  }

  componentDidMount() {
    fetch('API')
    .then(features =>  features.json())
    .then(developers => {
      this.setState({  developers })   
    })
  }

  filterCountry(e){
    this.setState({filterCountry: e })
  }

  filterSkills(e){
    this.setState({filterSkills: e })
  }

  render() {

    let developers = this.state.developers.features

    if (!developers ){
      return null
    }

   if  (this.state.filterCountry && this.state.filterSkills) {
      developers = developers.filter( developer =>
      developer.properties.continent
        .includes(this.state.filterCountry )
        )

     developers = developers.filter( developer =>
      developer.properties.skills 
        .includes(this.state.filterSkills )
        )

    }

любая помощь будет принята с благодарностью

console.log(developers)
(20) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
0
:
geometry
:
{coordinates: Array(2), type: "Point"}
id
:
"22bcd3917f78652cc62ee6908f057ceb"
properties
:
company_name
:
"redacted"
continent
:
"North America"
description
:
""
email
:
"redacted"
github
:
"redacted"
linkedin
:
""
location
:
"Sunnyvale, CA USA"

name
:
"redacted"
skills
:
""
skills_full
:
""
twitter
:
""
website
:
""
__proto__
:
Object
type
:
"Feature"
__proto__
:
Object

1 Ответ

0 голосов
/ 11 мая 2018

Если вы просто хотите запретить фильтрацию, когда состояния filterCountry = "All locations" и filterSkills = "All skills"

Вы можете просто сделать что-то подобное в своих фильтрах:

developers = developers.filter( developer => { 
    return this.state.filterCountry === 'All locations' || developer.properties.continent.includes(this.state.filterCountry)
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...