我最近需要使用Float32Array
类型数组,该数组将用于呈现元素列表(无论采用哪种类型的格式-例如,<ul>
带有<li>
我数组的每个元素)。出于某种原因,当我尝试呈现值时,即使NaN
调用返回isNaN()
,而且每个元素的false
为typeof
时,我仍然得到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>
元素中。我希望将已存储在数组中的值打印出来。
是否有任何原因导致渲染不适用于类型数组(如预期的那样),但在控制台日志记录中工作正常? (或者我实际上在做错什么吗?)
谢谢!
答案 0 :(得分:5)
之所以这样做,是因为Float32Array#map()期望回调函数返回一个数字,并且该方法本身返回一个Float32Array。您要做的是先将其转换为数组,然后将其映射:
Array.from(this.state.channels).map((val, i) => ...)