react-z/react-search

Async Items

jpsfs opened this issue · 3 comments

jpsfs commented

Hi!

This React components seems rather interesting!
Does it support gathering the items asynchronously from the server when the user types something?

Best regards,

It currently does not. However you should be able to fetch items before hand and simply feed them via props to this component.

If you'd like to submit a PR, we'd be happy to discuss and review it. :)

In my own react+redux application I have some async action creators that fetch my list and store it for later use. I'm sure something similar could be achieved with Flux or even jquery + localstorage.

I am doing as you describe, with redux, and passing the props down, however the render always seems to be one render behind. This is strange to me. Any Idea?

EG: I pass in ['test', 'test2'] -> no recommendations,
change input to [] -> ['test', 'test2'] show up.

svnm commented

Async loading data is working and can be seen in the example querying repos from github api. Pass in a function as prop to getItemsAsync it needs to return the callback when ajax loading of your data has completed. I hope to allow using promises rather than a callback for this as well in the near future.

getItemsAsync(searchValue, cb) {
    let url = `https://api.github.com/search/repositories?q=${searchValue}&language=javascript`
    fetch(url).then( (response) => {
      return response.json();
    }).then((results) => {
      if(results.items != undefined){
        let items = results.items.map( (res, i) => { return { id: i, value: res.full_name } })
        this.setState({ repos: items })
        cb(searchValue)
      }
    });
  }