Сопоставление данных с помощью useRef Hook
Я слежу за этим: объедините два данных JSON в один с определенными значениями ключей
Теперь я добавил useEffect()
крючок. Как я могу использовать useRef для хранения моего результата? Это асинхронная функция.
const App = (props) =>{
let result = useRef ()
useEffect(()=>{
return()=>
(result.current = [courtdata, balldata].reduce((p, q) => p.map((c, i) => Object.assign({},
{[c.court_id] : q[i].color}))))
}.[someTrigger])
return(
<ul>
{result.current.map(r => (
<li>
Court id - {r.court_id} | Ball colour - {r.color}
</li>
))}
</ul>
)
}
Теперь мои {r.court_id} и {r.color} пусты.
Вещи, которые я пробовал:
const App = (props) =>{
[result, setResult] = useState({})
useEffect(()=>{
setResult([courtdata, balldata].reduce((p, q) => p.map((c, i) => Object.assign({},
{[c.court_id] : q[i].color}))))
}))
return(
<ul>
{result.map(r => (
<li>
Court id - {r.court_id} | Ball colour - {r.color}
</li>
))}
</ul>
)
}
ошибка:TypeError: result.map is not a function
2 ответа
Решение
В соответствии с вашим оператором рендеринга разрешите данные, как показано ниже
Если вы выберете
useState
вариант
useEffect(() => {
const final = [courtdata, balldata].reduce((p, q) => p.map((c, i) => Object.assign({}, c, {color: q[i].color})));
setResult(final);
}, []);
useEffect
hook выполнить после того, как компонент смонтирован, и useRef
- это доступ к некоторому компоненту dom.
Я думаю, что тебе нужно useState
.
const [result, setResult] = useState({});