【发布时间】:2019-05-14 09:16:01
【问题描述】:
我是 hooks 和 React 的新手。我有以下代码:
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,因为它需要它们。但这似乎不正确或不干净。
- 我通常如何用钩子处理这个问题?我可以以某种方式将它们全部归为一类吗?但是那样我会再次恢复正常状态,不是吗?我对这里的设置有点困惑。
【问题讨论】:
-
你需要
doSomething在组件之外吗? -
不,不是。但我不明白使用钩子在组件内部使用
doSomething的代码会是什么样子。 : /
标签: javascript reactjs react-hooks