首页 > 解决方案 > 如何在本机反应中不将搜索结果保存在 redux-persist 中?

问题描述

我有从搜索请求呈​​现结果数据的顶部选项卡,

所以我找不到将数据传递给选项卡的任何解决方案!

因此,我在从 API 获取响应后使用 redux 保存结果数据,并将其作为道具传递到选项卡屏幕中。

但是我有一些问题用来redux-persist在本地保存状态,

但在这种情况下,我不想将这些数据保存在存储中,那么有没有办法处理它'就在这种情况下(搜索结果)'?

代码

搜索.js

 onSearch = async () => {
    const {searchText} = this.state;

        let response = await API.post('/search', {
          name: searchText,
        });
        let {
          data: {
            data: {data},
          },
        } = response;

        this.props.dispatch(getResult(data))

}

歌曲标签

{props.artists.length <= 0 ? (
        <Text style={[styles.serachFindText, {paddingVertical: 15}]}>
          Not found ☹️
        </Text>
      ) : (
        ... Flatlist ...
     )}

错误

无法读取未定义的属性“长度”

行动

import {GET_SEARCH_RESULT} from './types';
export const getResult = (songs, artists) => {
  return {
    type: GET_SEARCH_RESULT,
    songs,
    artists,
    // payload: result,
  };
};

减速器

import {GET_SEARCH_RESULT} from '../actions/types';

let initial_state = {
  searchResult: [], // maybe it's wrong?
};
const searchResultReducer = (state = initial_state, action) => {
  const {payload, type} = action;
  switch (type) {
    case GET_SEARCH_RESULT:
      return {...state, artists: action.artists, songs: action.songs};
    default:
      return state;
  }
};

export default searchResultReducer;

呃

店铺

..
import searchResultReducer from '../reducers/searchResultReducer';
..


const persistConfig = {
  key: 'root',
  storage: AsyncStorage,
};


const rootReducer = combineReducers({
  ...
  searchResult: searchResultReducer,
  ...
});

const persistedReducer = persistReducer(persistConfig, rootReducer);



export const store = createStore(
  persistedReducer,
  window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__(),
);
export const persistor = persistStore(store);

标签: javascriptreactjsreact-nativereduxreact-redux

解决方案


是的,您可以blacklist使用包含您不想保留的键的数组将键添加到 persistConfig。在你的情况下:

const persistConfig = {
  key: 'root',
  storage: AsyncStorage,
  blacklist: ['searchResult'],
};

检查persistReducer此处的所有配置选项。


推荐阅读