Как не сохранить результат поиска в Redux-Persist в реагировать родной? - PullRequest
0 голосов
/ 20 марта 2020

У меня есть главные вкладки, которые отображают данные результатов из поискового запроса,

Так что я не нахожу никакого решения для передачи данных на вкладки!

Поэтому я использую избыточность для сохранения результата данные после получения ответа от API и передачи его в качестве реквизита на экране вкладок.

Но у меня есть проблема, я использую 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 ...
     )}

Ошибка

Невозможно прочитать свойство 'length' из неопределенного

Действие

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;

err

Магазин

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

1 Ответ

1 голос
/ 20 марта 2020

Да, вы можете добавить ключ blacklist к persistConfig с массивом, включающим ключи, которые вы не хотите сохранять. В вашем случае:

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

Проверьте все параметры конфигурации для persistReducer здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...