Reactjs useEffect缺少依赖项“道具”

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

我正在学习redux。我不断遇到上面的警告。代码如下:

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]);