2017-08-23 11 views
0

公式の文書(https://www.styled-components.com/docs/faqs#can-i-refer-to-other-components)によれば、私は、例えばホバー効果を引き起こす別のコンポーネントを参照することができます。スタイリッシュなコンポーネントに反応する:他のコンポーネントを参照する

const Link = styled.a` 
    display: flex; 
    align-items: center; 
    padding: 5px 10px; 
    background: papayawhip; 
    color: palevioletred; 
`; 

const Link2 = styled.a` 
    display: flex; 
    align-items: center; 
    padding: 5px 10px; 
    background: steelblue; 
    color: white; 

    ${Link}:hover & { 
     background-color: greenyellow; 
     color: black; 
    } 
`; 

class Hello extends React.Component{ 
    render() { 
    return(
     <div> 
     <Link>Hello World</Link> 
     <Link2>Hello Again</Link2> 
     </div> 
    ) 
    } 
} 

基本的に、私の<Link>上でマウスを移動すると、<Link2>background-colorの変化をトリガする必要があります。

これは起こっていません。なぜどんなアイデア?

私はここにコードスニペットを作成:https://codesandbox.io/s/qv34lox494

答えて

2

をあなたはサイドバイサイドではない、あなたのスタイルのコンポーネントの子であるスタイル・コンポーネントを参照することができます。

ドキュメントからの引用を参照してください:

はここで、私たちのアイコンコンポーネントは、そのリンクへの応答を定義 があなたの問題のために

を推移している、あなたがのためのラッパーを作成することができますあなたのリンクの両方で、このようにCSSにadjacent sibling selectorを使用してください:

const Wrapper = styled.div` 
    & ${Link}:hover + ${Link2} { 
     background-color: greenyellow; 
     color: black; 
    } 
`; 

https://codesandbox.io/s/mo7kny3lmx

+0

もちろん、動作します。便利な答えをありがとう! – Lc0rE

関連する問題