我正在做一个简单的搜索功能,如果找到匹配的用户名,将从graphql端点返回一个用户对象。
在我当前的代码中,渲染似乎无法正常工作,即它为某些用户名渲染,但对于其他用户名则无法渲染,即使我看到用户已返回并正确设置了状态。
--release 13
如果我将设置状态的逻辑(即import React, { useState, useEffect } from 'react'
import { useLazyQuery } from '@apollo/react-hooks'
import { Link } from 'react-router-dom'
import FIND_USER_BY_LOGIN from '../queries/FIND_USER_BY_LOGIN'
const Search = () => {
const [term] = useState("")
const [user, setUser] = useState(null);
const [getUser, { data }] = useLazyQuery(FIND_USER_BY_LOGIN);
useEffect(() => {
setUser(data && data.user ? data.user : null)
}, [user, data])
return (
<div>
{ !! user && (
<Link to={`user/${user.login}`}>{user.name}</Link>
)}
<input type="text" name="login" value={term} onChange={ e => {
const login = e.target.value
getUser({ variables: {
login
}})
}}/>
</div>
)
}
export default Search
移到setUser
之外,则会出现useEffect
错误。