【问题标题】:Reactjs Array.slice(start, end) not workingReactjs Array.slice(开始,结束)不起作用
【发布时间】:2019-12-13 17:32:07
【问题描述】:

slice() 函数有问题。

我的代码:

constructor(props){
  super(props);
  this.state({
    data: props.data
  })
}

//my function
onSliceData = () => {
  let data = this.state.data;
  let sliceData = data.slice(0,5);
  return sliceData;
}

我的问题是我的函数没有返回任何东西。当我在 onSliceData 中console.log(data) 时,我收到如下结果:

而当我console.log(sliceData) 我只是收到 [] 我尝试使用 Object.keys 将数据转换为数组,但可能无法正常工作。 我需要一些帮助。

【问题讨论】:

  • Object.keys 不会将对象转换为数组。
  • 是的。 Object.keys 只是返回数组是对象的键。我想返回对象数组,例如:[{}, {},...] 我该怎么办?
  • 检查我的答案,如果 props.data 是一个对象数组,onSliceData 应该返回一个对象数组 :)
  • 我认为存储数据存在问题,而不是 slice 本身。

标签: reactjs slice


【解决方案1】:

尝试使用Array.from(data).slice。
它在 ReactJS 上对我同样有效。

【讨论】:

    【解决方案2】:

    确保接收到的道具有数据(这是一个数组)

    在构造函数中:

    constructor(props){
      super(props);
      this.state = { // assign the state with an js object instead of calling it as a func.
        data: props.data
      }
    }
    

    试试这个:

    onSliceData = () => {
      let data = [...this.state.data]; // spreading will return a new array
      let sliceData = data.slice(0,5);
      return sliceData;
    }
    

    【讨论】:

    • 谢谢你,但对我不起作用:(它没有返回 [] 内部:(
    • 您何时何地调用 onSliceData?
    • 我打电话给componentDidMount(){ this.onSliceData()}
    • 你在哪里记录返回值?
    • 我通过axios从mysql获取数据
    【解决方案3】:

    试试这个(我在 w3schools 的帮助下找到了这个):

    let sliceData = data.toString().slice(0,5);

    我试过这个方法,效果很好!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 2021-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多