【发布时间】:2021-01-19 23:55:07
【问题描述】:
我有一个问题 - 当我通过组件进行映射时,如何每秒更改一次组件的背景颜色?我应该以某种方式从“i”变量中调节它吗?或者当从 map 函数返回某些东西时可能是 if/else 条件?有没有更清洁的方法呢?我使用 styled-components 为我的大部分元素设置样式,但我想每隔一个项目更改一次 backgroundColor。
const Tree = memo(({ children, name, style, defaultOpen = false }) => {
const [isOpen, setOpen] = useState(defaultOpen)
const previous = usePrevious(isOpen)
const [bind, { height: viewHeight }] = useMeasure()
const { height, opacity, transform } = useSpring({
from: { height: 0, opacity: 0, transform: 'translate3d(20px,0,0)' },
to: { height: isOpen ? viewHeight : 0, opacity: isOpen ? 1 : 0, transform: `translate3d(${isOpen ? 0 : 20}px,0,0)` }
})
const Icon = Icons[`${children ? (isOpen ? 'Minus' : 'Plus') : 'Close'}SquareO`]
return (
<Frame>
<Icon style={{ ...toggle, opacity: children ? 1 : 0.3 }} onClick={() => setOpen(!isOpen)} />
<Title style={style}>{name}</Title>
<Content style={{ opacity, height: isOpen && previous === isOpen ? 'auto' : height }}>
<a.div style={{ transform }} {...bind} children={children} />
</Content>
</Frame>
)
})
const App = () => (
<>
<Global />
{data.map((info, i) => {
return (
<div key={i}>
<Tree name={info.name} defaultOpen>
{info.division.map((divi, idx) => (
<Tree name={divi.title}>
{divi.nonITteams.map((nonITteam) => {
return <li>{nonITteam}</li>
})}
{divi.teams.map((team) => {
return (
<Tree name={team.name}>
{team.members.map((member) => {
return <li>{member}</li>
})}
</Tree>
)
})}
</Tree>
))}
</Tree>
</div>
)
})}
</>
)
【问题讨论】:
标签: javascript css reactjs dictionary styled-components