【问题标题】:React/Redux - Storing an item in state AND sending it to a databaseReact/Redux - 以状态存储项目并将其发送到数据库
【发布时间】:2018-08-27 10:29:42
【问题描述】:

我正在构建一个应用程序,该应用程序的一部分是它允许人们收藏某些项目。他们只需单击 SVG 心形图标,它就会变成红色,并以状态 存储到“收藏夹”中,然后将其发送到数据库 (MySQL)。如果他们再次单击该图标,它会变回灰色,将其从状态中移除,然后运行另一个 fetch 到数据库以删除该项目。

我一直在尝试将它构建到我的动作创建器中,但我无法让它们同时工作(也就是说,我无法让它发送到状态和数据库)。然而,我确实让它完美地发挥了状态功能。我把它放在下面:

export const toggleFavorite = name => (dispatch, getState) => {
  const { searchResults, favorites } = getState()
  const currentSelection = filter(
    selection => selection.name === name,
    searchResults
  )
  const newFavorite = contains(currentSelection, favorites)
    ? reject(equals(currentSelection), favorites)
    : append(currentSelection, favorites)
  dispatch({
    type: SET_FAVORITE,
    payload: newFavorite
  })
}

所以,我的问题是:我在哪里以及如何将我的提取放到后端以允许插入和删除?这是我最后一次失败的尝试:

export const toggleFavorite = name => async (dispatch, getState) => {
  const { searchResults, favorites } = getState()
  const currentSelection = filter(
    selection => selection.name === name,
    searchResults
  )
  const newFavorite = contains(currentSelection, favorites)
    ? reject(equals(currentSelection), favorites)
      await fetch(`http://localhost:5000/deletefavorite?user_id=1&selection_id=${currentSelection}`)
    : append(currentSelection, favorites)
      await fetch(`http://localhost:5000/addfavorite?user_id=1&selection_id=${currentSelection}`)

  dispatch({
    type: SET_FAVORITE,
    payload: newFavorite
  })
}

提前致谢!

【问题讨论】:

    标签: mysql reactjs redux react-redux redux-thunk


    【解决方案1】:

    你应该用经典的 if/else 替换三元条件:

    if (contains(currentSelection, favorites)) {
        const newFavorite = reject(equals(currentSelection), favorites);
        await fetch(`http://localhost:5000/deletefavorite?user_id=1&selection_id=${currentSelection}`);
        dispatch({
            type: SET_FAVORITE,
            payload: newFavorite
        });
    } else {
        const newFavorite = append(currentSelection, favorites)
        await fetch(`http://localhost:5000/addfavorite?user_id=1&selection_id=${currentSelection}`);
        dispatch({
            type: SET_FAVORITE,
            payload: newFavorite
        });
    }
    

    【讨论】:

    • 绝对完美。像魅力一样工作。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 2019-12-12
    • 2016-04-21
    • 2020-05-13
    • 2020-01-06
    相关资源
    最近更新 更多