javascript - 为什么内容只有在 onChange 之后才呈现?

标签 javascript arrays reactjs rc-slider

我正在使用rc-slider从数组中获取一堆值并将它们呈现在我的组件中。

const array = ["Hey", "Ho", "Me", "Too", "See"]
class App extends Component {
  state = { sliderValues: [0, 1, 2, 3, 4] };

  handleChange = sliderValues => {
    this.setState({ sliderValues }, () => console.log(array[this.state.sliderValues]));
  };

  render() {
    const renderContent = array.map((value, index) => {
      console.log(value, 'value')
      console.log(index, 'index')
      if (index === this.state.sliderValues) {
        return (
          <div>
            <h1>{value}</h1>
          </div>
        )
      }
    })
    return (
      <div>
        {renderContent}
        <Slider onChange={this.handleChange} min={0} max={4} defaultValue={this.state.sliderValues} marks={{ 0: 250, 1: 500, 2: 750, 3: 1000, 4: 1500 }} step={null} />
      </div>
    )
  }
}

我只想一次显示数组中的一项。除了初始渲染之外,一切正常。您会注意到,只有在与 <Slider />. 交互后,该组件才会呈现自身。 。

这是为什么?

Codesandbox

最佳答案

    import React, {Component} from "react";
    import ReactDOM from "react-dom";
    import Slider from 'rc-slider'
    import "./styles.css";

    const array = ["Hey", "Ho", "Me", "Too", "See"]
    class App extends Component {
      // you need to provide an initial value to be rendered at the first time
      state = { sliderValues: 0 };

      handleChange = sliderValues => {
        this.setState({ sliderValues }, () => console.log(array[this.state.sliderValues]));
      };

      render() {
        const renderContent = array.map((value, index) => {
          console.log(value, 'value')
          console.log(index, 'index')
          if (index === this.state.sliderValues) {
            return (
              <div key={value}>
                <h1>{value}</h1>
              </div>
            )
          }
        })
        return (
          <div>
            {renderContent}
            <Slider onChange={this.handleChange} min={0} max={4} defaultValue={this.state.sliderValues} marks={{ 0: 250, 1: 500, 2: 750, 3: 1000, 4: 1500 }} step={null} />
          </div>
        )
      }
    }

    const rootElement = document.getElementById("root");
    ReactDOM.render(<App />, rootElement);

关于javascript - 为什么内容只有在 onChange 之后才呈现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55695598/

相关文章:

javascript - 隐藏 10000 个下拉菜单的最佳方法

javascript - 谷歌地图 API V3 fitBounds() 不工作

javascript - 如何用 jest 和 enzyme 模拟 React 组件方法

reactjs - 如何使用 React Hooks 更改按钮单击时的图像?

javascript - react 路由器传递数据

javascript - 如何在jquery中删除img标签的url?

python - 通过替换对 python 数组进行混洗

java - 有没有一种快速方法可以从另一个数组创建返回码数组?

java - 如何检测整数数组中的重复值并用它们在java中创建一个新值?

reactjs - 默认禁用按钮单击事件不会在 reactjs 上触发