ReactJs useState .map() is not a function(ReactJs useState.map()不是函数)
                            本文介绍了ReactJs useState.map()不是函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
                        
                        问题描述
我试图了解useState和useEffect挂钩在ReactJ中是如何工作的。
我收到错误消息
.map()不是函数
在尝试显示表中的数据时。
const [posts, setPosts] = useState([]);
useEffect(() => {
    const alarmService = new AlarmService();
    const response = alarmService.getData();
    setPosts(response)
}, [])
return (
    <table className="table">
        <tbody>
        {posts.map(data => (
            <tr key={data.id}>
                <td>
                    <div className="row">
                        {data.name}
                    </div>
                </td>
                <td className="custom" >
                    <button
                        className="btn btn-danger btn-sm"
                        onClick={() => this.handleDelete(data)}
                    >
                        Delete
                    </button>
                </td>
            </tr>
        ))}
        </tbody>
    </table>
);
我假设问题出在我的useEffect中,因为我不确定如何处理响应。
已解决
我研究了以下示例: https://www.robinwieruch.de/react-hooks-fetch-data/
诀窍是在useEffect中创建一个异步函数。如下所示:useEffect(() => {
    async function test() {
       const alarmService = new AlarmService();
       const response = await alarmService.getData();
       console.log(response);
       setPosts(response)
    }
    test();
}, []);
感谢所有花时间回应和帮助的人!
推荐答案
我认为这里的问题是alarmService.getData是异步的,您没有正确处理它。这就是为什么您将承诺挂起,并且您不能在帖子上映射。
useEffect(() => {
    const alarmService = new AlarmService();
    alarmService.getData().then(response => response.json()).then(data =>setPosts(data))    
}, []) 
这应该可以解决您的问题。
这篇关于ReactJs useState.map()不是函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
				 沃梦达教程
				
			本文标题为:ReactJs useState.map()不是函数
				
        
 
            
        
             猜你喜欢
        
	     - Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
 - 失败的 Canvas 360 jquery 插件 2022-01-01
 - Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
 - 400或500级别的HTTP响应 2022-01-01
 - Fetch API 如何获取响应体? 2022-01-01
 - 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
 - CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
 - Flexslider 箭头未正确显示 2022-01-01
 - addEventListener 在 IE 11 中不起作用 2022-01-01
 - 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
 
						
						
						
						
						