发布
社区首页 >问答首页 >关系数据冗余

关系数据冗余
EN

Stack Overflow用户
提问于 2020-12-23 07:12:12
回答 2查看 40关注 0票数 1

我正在做一个有关系数据的项目。这个项目在Redux中,我有一个问题。我试了很久,但我不能在前面显示“关键字”。我做错了什么?

下面是reducer:

代码语言:javascript
代码运行次数:0
复制
case START_DOWNLOAD_KEYWORDS:
            return {
                ...state,
                loading: true,
                thisdomain: action.payload
            }
        case DOWNLOAD_KEYWORDS_SUCCESS:
            return {
                ...state,
                keywords: state.keywords.filter(keyword => keyword.project_id == state.thisdomain)
            }

下面是操作:

代码语言:javascript
代码运行次数:0
复制
export function getKeywordsAction(id) {
    return async (dispatch) => {
        dispatch(startDownloadKeywords(id));
        try {
            const response = await clienteAxios.get('/keywords');
            dispatch(downloadKeywordsSuccess(response.data));
        } catch (error) {
            console.log(error);
            dispatch(downloadKeywordsError());
        }
    }
};

const startDownloadKeywords = (id) => ({
    type: START_DOWNLOAD_KEYWORDS,
    payload: id
});

const downloadKeywordsSuccess = keywords => ({
    type: DOWNLOAD_KEYWORDS_SUCCESS,
    payload: keywords
});

最后是容器:

代码语言:javascript
代码运行次数:0
复制
const { id } = props.match.params;


    const dispatch = useDispatch();

    useEffect( () => {
        // Consultar la api
        const chargeKeywords = (id) => dispatch(getKeywordsAction(id));
        chargeKeywords(id);

    }, []);

    //obtener el state
    const keywords = useSelector(state => state.domains.keywords);

因此,在此之后,我使用地图调用{关键字},但我看不到任何东西,因为keywords.length === 0。

在START_DOWNLOAD_KEYWORDS中:我得到:

代码语言:javascript
代码运行次数:0
复制
{
  domains: {
    domains: [],
    error: null,
    loading: true,
    domaindelete: null,
    thisdomain: '3',
    keywords: []
  }
}

在DOWNLOAD_KEYWORDS_SUCCESS中是这样的:

代码语言:javascript
代码运行次数:0
复制
{
  domains: {
    domains: [
      {
        id: 2,
        name: 'Bla bla',
        url: 'http://blabla.com',
        country: 'España'
      },
      {
        id: 3,
        name: 'Hello',
        url: 'https://hellok.com',
        country: 'España'
      }
    ],
    error: null,
    loading: false,
    domaindelete: null,
    thisdomain: '3',
    keywords: []
  }
}

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-23 10:33:43

我认为您的代码的问题出在case DOWNLOAD_KEYWORDS_SUCCESS

在这行中,keywords: state.keywords.filter(keyword => keyword.project_id

应该是keywords: action.payload.filter(keyword => keyword.project_id

此时您的状态没有更改,action.payload是更新后的数据。

票数 0
EN

Stack Overflow用户

发布于 2020-12-23 07:14:59

我发现减速机有误,一定是===。但是仍然有同样的问题:

代码语言:javascript
代码运行次数:0
复制
keywords: state.keywords.filter(keyword => keyword.project_id === state.thisdomain)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65417034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档