我有一个用于呈现数据库中用户列表的类
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调用,只能在主体内部调用Hook 组件
我认为不可能在类组件内部使用钩子。 如果不可能的话,从此类内的服务器获取数据的最佳方法是什么?
答案 0 :(得分:3)
您不能在类组件中使用钩子。请改用componentDidMount
。
答案 1 :(得分:0)
挂钩只能在功能组件中使用。
您可以像这样将组件重写为功能组件:
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>
)
}