Как отобразить объекты в магазине (с помощью redux-thunk) - PullRequest
0 голосов
/ 31 марта 2020

Привет, я хочу перебрать объект в массиве с помощью redux, redux-thunk

Проблема в том, что глобальное состояние (хранилище) не может повторяться с помощью Array.map()

Вот пример учебника https://codesandbox.io/s/modest-pike-q0449

Вот моя версия https://codesandbox.io/s/redux-thunk-fetch-6wsr8

Разница ...

при создателях асинхронных действий

axios.get('https://jsonplaceholder.typicode.com/todos/1') //tutorial: return 1 object
axios.get('https://jsonplaceholder.typicode.com/todos')   //my experimental: return array of object

и UI Component

const dispatch = useDispatch();

// Tutorial------------------------------
{content.data && (
  <ul>
    <li>{content.data.id}</li>
    <li>{content.data.title}</li>
  </ul>
)}

// My Experimental------------------------ ERROR: content.map is not a function.
<ul>
  {content.map(todo => (
    <li key={todo.id}>{todo.title}</li>
  ))}
</ul>

Я искал решение. Я нашел React.Children, но я не уверен, что использовать его в этом случае.

Спасибо

1 Ответ

0 голосов
/ 31 марта 2020

это то, что вам нужно

const content = useSelector(state => state.data || []);

Вы можете избавиться от пустого массива по умолчанию, инициализировав данные как [] в исходном состоянии

function reducer(state = { data: [] }, action) {

}

// now access data
const content = useSelector(state => state.data);
...