Я новичок в крючках и реагирую. У меня есть следующий код:
import React, { useState, useRef } from 'react';
let doSomething = (obj, section, setActiveItem, subs, i) => {
if (
obj.previousPosition === 'in' &&
obj.currentPosition === 'below'
) {
if (i !== 0) {
setActiveItem(subs[i - 1].id);
}
}
};
export default ({ data }) => {
const subs = [
{
label: 'Section 1',
id: 'section1',
ref: useRef(null),
},
{
label: 'Section 2',
id: 'section2',
ref: useRef(null),
},
];
const [activeItem, setActiveItem] = useState('section1');
return (
<>
{subs.map((sub, i) => {
return (
<Waypoint
key={sub.id}
bottomOffset="75%"
onEnter={obj => {
doSomething(obj, sub.id, setActiveItem, subs, i);
//I DONT LIKE THAT I NEED TO PASS ON EVERYTHING HERE
}}
>
<Section id={sub.id} ref={sub.ref} />
</Waypoint>
);
})}
</>
);
};
Теперь моя проблема в том, что в моей функции onEnter
мне нужно передать все эти свойства в функцию doSomething
, так как она нуждается в них. Но это не кажется правильным или чистым.
- Как бы я обычно справлялся с этим с помощью крючков? Могу ли я как-то поместить все это в один класс? Но тогда у меня снова будет нормальное состояние, не так ли? Я немного смущен настройкой здесь.