reactjs 为什么我在react组件中的span元素打印在新行上而不是内联的?

omtl5h9j  于 2022-11-22  发布在  React
关注(0)|答案(1)|浏览(144)

我有一个react组件,我试图将输入框放在日历的右边。

class PayrollComponent extends Component {
  constructor(props) {
    super(props);

    this.state = {
      val: 0,
    };
  }

  componentDidUpdate() {
    const inputElement = document.createElement("input");
    inputElement.setAttribute("type", "time");
    inputElement.setAttribute("className", "test");
    inputElement.style.margin = "10px";

    const inputContainer = document.getElementById("inputContainer");
    const br = document.createElement("br");
    // const textNode = document.createTextNode(" ");

    inputContainer.appendChild(inputElement);
    inputContainer.appendChild(inputElement);
    // inputContainer.appendChild(textNode);

    if ((this.state.val % 2 === 0) | (this.state.val === 2)) {
      inputContainer.appendChild(br);
    }
    console.log("Component updates by this many times: " + this.state.val);
  }

  render() {
    return (
      <div>
        <span>
          <CalendarComponent className="test" daysSelected={(days) => this.setState({ val: days + 1 })} /> <div id="inputContainer"></div>
        </span>
        <span>
          <div id="inputContainer" className="test"></div>
        </span>
        <p> {this.state.val} </p>
      </div>
    );
  }
}

export default PayrollComponent;

我在react中把两个span元素放在一起,但是它们在dom中并不是这样显示的。我以为这样会把日历和输入框放在一起呢?我附上了一个截图,显示.

我尝试将日历组件和输入容器 Package 在span标记中,以为这样会使它们内联

b09cbbtk

b09cbbtk1#

首先,任何元素的display CSS属性决定了它的布局方式。<span><div>都有相应的默认值,但它们可以更改。从示例中无法判断它们是否是默认值。但即使假设它们不是默认值,您也没有说明<CalendarComponent>是什么。如果它是块级元素,那么它是否在span中并不重要。它会有自己的区块。将它的display变更为其他值(例如inline-block)可能会有帮助。请参阅:

<section>
  <span>
    side
  </span>
  <span>
    by
  </span>
  <span>
    side
  </span>
</section>

<hr>

<section>
  <span>
    <div>NOT side</div>
  </span>
  <span>
    by
  </span>
  <span>
    side
  </span>

<hr>

<section>
  <span>
    <div style="display: inline-block">IS side</div>
  </span>
  <span>
    by
  </span>
  <span>
    side
  </span>
</section>

相关问题