Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何仅在输入中搜索时显示数据?_Reactjs_React Hooks - Fatal编程技术网

Reactjs 如何仅在输入中搜索时显示数据?

Reactjs 如何仅在输入中搜索时显示数据?,reactjs,react-hooks,Reactjs,React Hooks,我正在学习react并制作一个简单的应用程序,允许用户通过api搜索国家。 我已成功获取api并将其设置为某种状态,并为文本输入中的搜索创建了一个过滤器组件。 但是,我不想显示任何内容,直到用户在搜索输入中键入内容,然后显示与键入的字母匹配的国家。 最常用的方法是什么 const App = () => { const [countries, setCountry] = useState([]) const [search, setSearch] = useState('')

我正在学习react并制作一个简单的应用程序,允许用户通过api搜索国家。 我已成功获取api并将其设置为某种状态,并为文本输入中的搜索创建了一个过滤器组件。 但是,我不想显示任何内容,直到用户在搜索输入中键入内容,然后显示与键入的字母匹配的国家。 最常用的方法是什么

const App = () => {
  const [countries, setCountry] = useState([]) 
  const [search, setSearch] = useState('')


  useEffect(() => {
    console.log('effect')
    axios
    .get(`https://restcountries.eu/rest/v2/all`)
    .then(response => {
      console.log(response,'promise fulfiled')
      setCountry(response.data)
    })
  }, [])

  const handleSearch = (e) => {
    setSearch(e.target.value)
  }

  const filter = countries.filter(country =>
    country.name.toLowerCase().includes(search.toLowerCase()) 
    );


  return (
    <div className="App">
    Search Country: 
    <input type='text' onChange={handleSearch}/>
    <Country filter={filter} />
    </div>
  );
}
const-App=()=>{
const[countries,setCountry]=useState([])
const[search,setSearch]=useState(“”)
useffect(()=>{
console.log('effect'))
axios
.得到(`https://restcountries.eu/rest/v2/all`)
。然后(响应=>{
日志(响应,“承诺履行”)
setCountry(response.data)
})
}, [])
常量handleSearch=(e)=>{
设置搜索(如目标值)
}
常量筛选器=国家/地区。筛选器(国家/地区=>
country.name.toLowerCase().includes(search.toLowerCase())
);
返回(
搜索国家:
);
}
const Country=({filter})=>{
返回(
    { filter.map(国家=>
  • {country.name}
  • ) }
)
这是当前的代码,但是它显示了api中的所有国家。在用户在输入框中键入之前,我不想显示任何国家。
谢谢。

只需对
进行条件渲染即可

仅当提供了
search
时才显示国家/地区列表

{ search && <Country filter={filter} /> }
{search&&}

{ search && <Country filter={filter} /> }