Reactjs useEffect缺少依赖项“道具”
我正在学习redux。我不断遇到上面的警告。代码如下:Reactjs useEffect缺少依赖项“道具”,reactjs,redux,Reactjs,Redux,我正在学习redux。我不断遇到上面的警告。代码如下: import React,{useEffect} from 'react'; import {connect} from 'react-redux'; import {fetchPosts} from '../actions/postActions' function Post(props){ useEffect( () => { props.fetchPosts(); },[]); con
import React,{useEffect} from 'react';
import {connect} from 'react-redux';
import {fetchPosts} from '../actions/postActions'
function Post(props){
useEffect(
() => {
props.fetchPosts();
},[]);
const postItems = props.posts.map(post => (
<div key={post.id}>
<h3>{post.title}</h3>
<p>{post.body}</p>
</div>
));
return (
<div>
<h1>Post</h1>
{postItems}
</div>
);
}
const mapStateToProps = state => ({
posts: state.posts.items
});
export default connect(mapStateToProps, { fetchPosts })(Post);
现在我认为问题是因为fetchPost被声明为另一个文件夹中的操作,这导致了错误。因此,最好的解决方案是将fetchPosts声明移动到useffect中。我应该在redux中这样做吗,因为很多教程将操作单独放置,而不是与组件放在同一个文件夹中。而且,它一直在说我缺少特定的道具,但是当我将道具放入依赖项数组时,它会创建一个无限循环。你们能帮我一下吗,谢谢。我可以保证我已经通读了这里的所有问题,但在这些情况下,它们缺少功能,而不是道具本身,所以我想我应该问这个问题。感谢阅读。您需要指定在useEffect的回调中访问的所有依赖项。在这种情况下,您只需添加FetchPost: 请注意,如果该函数在组件的道具上可用,则不需要从操作导入fetchpost
更多信息请参见。请向我显示post组件的完整代码如果您添加组件的结尾,我怀疑您将丢失该操作的带有mapDispatchToProps的connect语句。e、 g导出默认connectnull,{fetchPosts}Post@Oliver是的,已经包括在内了。@ShotaTopchishvili我已经编辑好显示所有代码。它正在提取数据,但它一直给我警告,有人说忽略了这一点,我应该这样做吗?如果我从函数Posts{fetchPosts}中删除props,它会给出一个错误,当我稍后在props.Posts.map中使用props时,没有定义props。我试着在函数中包含它们,但由于某些原因,它会产生更多的错误。任何涉及道具的东西。将需要在函数括号内或函数内部进行解构,但Clarity的解决方案是正确的是,我现在知道了。谢谢@Clarity
export const fetchPosts = () => dispatch => {
fetch('https://jsonplaceholder.typicode.com/posts?_limit=10')
.then(res => res.json())
.then(posts => dispatch({
type: FETCH_POSTS,
payload: posts
}));
function Post({fetchPosts}){
useEffect(() => {
fetchPosts();
},[fetchPosts]);