React-motion div嵌套

时间:2016-09-19 18:35:36

标签: reactjs jsx react-motion

以下是来自github的demo0-simple-transition的代码。 Link 如何向移动的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 个答案:

答案 0 :(得分:1)

这就是你的React Motion组件返回的内容 -

<div className="demo0">
  <div className="demo0-block" style={{
        WebkitTransform: `translate3d(${x}px, 0, 0)`,
        transform: `translate3d(${x}px, 0, 0)`,
      }} />
    </div>

在React中,<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>

答案 1 :(得分:0)

汤姆再次感谢。你的回答是99%正确,但不需要括号{}。您只需要关闭open div标签&gt;。通常关闭div。并开始在下面添加元素。 (也许这就是你的实际意义,而Braces只是为了展示。如果这是真的 - 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>