Я використовую досить гарне рішення для цього в одному з моїх останніх додатків, що працює для моїх цілей, і я вважаю, що це швидше, ніж написання спеціальних функцій налаштування курсору у ванілі js (хоча, я визнаю, можливо, це не найкраща практика в більшості середовищ ..) Отже, на випадок, якщо ви все-таки зацікавлені, тут іде.
Я створюю батьківський елемент лише для того, щоб утримувати вбудовані стилі JavaScript, потім дитина з класним іменем або ідентифікатором, на який мій таблиця стилів css зав'яжеться, і напише стиль наведення в мій виділений файл css. Це працює тому, що більш деталізований дочірній елемент отримує вбудовані js стилі у спадок, але має свої стилі наведення курсору, перекриті файлом css.
Таким чином, мій фактичний файл css існує лише з метою проведення ефектів наведення, більше нічого. Це робить його досить стислим і простим в управлінні, і дозволяє мені робити важкі підйоми в моїх стильових компонентах In-line React.
Ось приклад:
const styles = {
container: {
height: '3em',
backgroundColor: 'white',
display: 'flex',
flexDirection: 'row',
alignItems: 'stretch',
justifyContent: 'flex-start',
borderBottom: '1px solid gainsboro',
},
parent: {
display: 'flex',
flex: 1,
flexDirection: 'row',
alignItems: 'stretch',
justifyContent: 'flex-start',
color: 'darkgrey',
},
child: {
width: '6em',
textAlign: 'center',
verticalAlign: 'middle',
lineHeight: '3em',
},
};
var NavBar = (props) => {
const menuOptions = ['home', 'blog', 'projects', 'about'];
return (
<div style={styles.container}>
<div style={styles.parent}>
{menuOptions.map((page) => <div className={'navBarOption'} style={styles.child} key={page}>{page}</div> )}
</div>
</div>
);
};
ReactDOM.render(
<NavBar/>,
document.getElementById('app')
);
.navBarOption:hover {
color: black;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="app"></div>
Зауважте, що в стилі "child" inline немає набору властивостей "color". Якби це було, це не спрацювало, тому що стиль вбудованої системи мав би перевагу над моєю таблицею стилів.
onMouseEnter
таonMouseLeave
. Що стосується точного втілення цього - то саме від вас залежить. Щоб переглянути ваш конкретний приклад, чому б не зробити<Clickable/>
обгортку aspan
?