在ReactJS中渲染时,TypedArray将其值显示为NaN

时间:2019-02-11 22:38:38

标签: javascript reactjs

我最近需要使用Float32Array类型数组,该数组将用于呈现元素列表(无论采用哪种类型的格式-例如,<ul>带有<li>我数组的每个元素)。出于某种原因,当我尝试呈现值时,即使NaN调用返回isNaN(),而且每个元素的falsetypeof时,我仍然得到number 控制台将打印出精确的值。例如:

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

    this.state = { channels: new Float32Array([1, 2, 3, 4]) };
  }

  render() {
    return (
      <ul>
        {this.state.channels.map((val, index) => (
          <li key={index}>{val}</li>
        ))}
      </ul>
    );
  }
}

export default App;

这将打印一系列NaNNaNNaNNaN(甚至不将它们分布在适当的<li>元素中。我希望将已存储在数组中的值打印出来。

是否有任何原因导致渲染不适用于类型数组(如预期的那样),但在控制台日志记录中工作正常? (或者我实际上在做错什么吗?)

谢谢!

1 个答案:

答案 0 :(得分:5)

之所以这样做,是因为Float32Array#map()期望回调函数返回一个数字,并且该方法本身返回一个Float32Array。您要做的是先将其转换为数组,然后将其映射:

Array.from(this.state.channels).map((val, i) => ...)