Реакция вложенности
Вот код для демо-простого перехода от github. Ссылка Как добавить контент в движущийся элемент div. Я надеялся использовать вариант этого для запуска всплывающего меню, но не могу понять, как вставить в него внутренний контент. Спасибо
import React from 'react';
import {Motion, spring} from '../../src/react-motion';
const Demo = React.createClass({
getInitialState() {
return {open: false};
},
handleMouseDown() {
this.setState({open: !this.state.open});
},
handleTouchStart(e) {
e.preventDefault();
this.handleMouseDown();
},
render() {
return (
<div>
<button
onMouseDown={this.handleMouseDown}
onTouchStart={this.handleTouchStart}>
Toggle
</button>
<Motion style={{x: spring(this.state.open ? 400 : 0)}}>
{({x}) =>
// children is a callback which should accept the current value of
// `style`
<div className="demo0">
<div className="demo0-block" style={{
WebkitTransform: `translate3d(${x}px, 0, 0)`,
transform: `translate3d(${x}px, 0, 0)`,
}} />
</div>
}
</Motion>
</div>
);
},
});
export default Demo;
2 ответа
Так что это то, что возвращается из вашего компонента React Motion -
<div className="demo0">
<div className="demo0-block" style={{
WebkitTransform: `translate3d(${x}px, 0, 0)`,
transform: `translate3d(${x}px, 0, 0)`,
}} />
</div>
В действительности, <div>
можно записать как <div/>
если у него нет детей. Чтобы вставить детей, включите его в обычный HTML div
формат: <div>{children}</div>
В вашем случае это будет:
<div className="demo0">
<div className="demo0-block" style={{
WebkitTransform: `translate3d(${x}px, 0, 0)`,
transform: `translate3d(${x}px, 0, 0)`,
}} >
{/* Children elements here */}
</div>
</div>
Том еще раз спасибо. Вы ответили правильно на 99%, но скобки не нужны {}. Вам просто нужно закрыть открытый тег div>. И закройте div нормально. И начните добавлять элементы, как показано ниже. (Возможно, это то, что вы на самом деле имели в виду, и фигурные скобки были просто для демонстрации. Если это правда - 100% правильно)
<Motion style={{x: spring(this.state.open ? 400 : 0)}}>
{({x}) =>
// children is a callback which should accept the current value of
// `style`
<div className="demo0">
<div className="demo0-block" style={{
WebkitTransform: `translate3d(${x}px, 0, 0)`,
transform: `translate3d(${x}px, 0, 0)`,
}}>
<div><h1>Lots of stuff can go in here
here now!</h1></div>
</div>
}
</Motion>