代码之家  ›  专栏  ›  技术社区  ›  Anilkumar iOS Developer

在自定义对象的react native typescript中完成搜索筛选器后,无法分配数据

  •  0
  • Anilkumar iOS Developer  · 技术社区  · 4 年前

    我有一个自定义对象数组,在其中存储api响应,并将数据显示到平面列表的UI中。

    export type userInfo = {
      id: string,
      title: string,
      email: string,
      userAccount: number
    };
    
    export type userData = {
      page: number,
      pageSize: number,
      userInformation: userInfo[]
    }
    
    export const User: FunctionComponent = () => {
    
           const [search, setSearch] = useState('');
          const [userInfo, setUserInfo] = useState<userInfo>();
      
          const [arrayholder, setArrayholder] =useState<userInfo>();
    
          useEffect(() => {
              setUserInfo(someState.userInfo);
              setArrayholder(someState.userInfo);
          }, [someState]);
    
    searchData= (text: any)=>  {
                const newData = arrayholder?.userData.filter(item => {
                    const itemData = item.title.toUpperCase();
                    const textData = text.toUpperCase();
                    return itemData.indexOf(textData) > -1
                  });
                  console.log("newData is", newData) //here throwing error
                  setUserInfo(newData)
                    setSearch(text)    
                  }
    
    }
    
              return (
    
    //here showing searchbar
    //here showing flatlist showing with userInfo
    
    )
    

    在尝试为userInfo设置新数据时,它显示以下错误,无法在flatlist中显示搜索数据。

      Type 'userInfo[]' provides no match for the signature '(prevState: userInfo | undefined): userData | undefined'.ts(2345)
    

    有什么建议吗?

    我是新手 打字稿 语言

    1 回复  |  直到 4 年前
        1
  •  1
  •   Michael Bahl    4 年前

    filter 返回一个数组:

    arrayholder?.activities.filter
    

    这就是userInfo需要数组类型参数的原因。

    const [userInfo, setUserInfo] = useState<userInfo[]>();