У меня есть главные вкладки, которые отображают данные результатов из поискового запроса,
Так что я не нахожу никакого решения для передачи данных на вкладки!
Поэтому я использую избыточность для сохранения результата данные после получения ответа от 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;
Магазин
..
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);