为了账号安全,请及时绑定邮箱和手机立即绑定

将 useEffect 与类组件一起使用

将 useEffect 与类组件一起使用

交互式爱情 2022-12-02 11:22:35
我有一个用于从数据库中呈现用户列表的类    export default class Users extends React.Component {          constructor() {        super()      this.state = {          data : [] //define a state          }      }        renderUsers = () => {        useEffect(() => {          fetch('exemple.com')            .then((response) => response.json())            .then((json) => this.setState({data: json.result})) // set returned values into the data state            .catch((error) => console.error(error))        }, []);           return  this.state.data.map((value,key)=>{ // map state and return some views             ......          })     }         render() {        return (                 <View style={{ flex: 1 }}>              {this.renderUsers()} //render results            </View>            );      }    }问题是这段代码会抛出以下错误:无效的 Hook 调用,Hooks 只能在 body 组件内部调用我认为不可能在类组件内部使用挂钩。如果不可能,从此类内部的服务器获取数据的最佳方法是什么?
查看完整描述

2 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

您不能在类组件中使用挂钩。改用componentDidMount



查看完整回答
反对 回复 2022-12-02
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

钩子只能用在功能组件中。


您可以将您的组件重写为功能性组件,如下所示:


export default Users = () => {

    const [data, setData] = useState([]);


    useEffect(() => {

        fetch('exemple.com')

            .then((response) => response.json())

            .then((json) => setData(json.result)) // set returned values into the data state

            .catch((error) => console.error(error))

    }, []);


    const renderUsers = () => {

        return data.map((value, key) => {

            // DO STUFF HERE

        })

    }


    return (

        <View style={{ flex: 1 }}>

            {renderUsers()} //render results

        </View>

    )


}


查看完整回答
反对 回复 2022-12-02
  • 2 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信