为什么不允许扩散运算符在React Native组件属性赋值中进行性能优化?

时间:2016-01-13 00:13:07

标签: javascript react-native

在React Native组件中,如果在props分配中使用了spread运算符,则会出现错误,"在此环境中,assign的目标必须是一个对象。此错误是性能优化,不符合规范。"扔了。

例如,在渲染功能

const { style } = props;
  return (
    <View style={{borderWidth: 1, ...style}}>

给出enter image description here

同时

const { style } = props;
  return (
    <View style={{borderWidth: 1, paddingLeft: 1}}>

的工作原理。为什么扩展语法会影响性能?

3 个答案:

答案 0 :(得分:5)

实际上,如果使用StyleSheet.create()将样式属性传递给子组件,则结果为Number。

答案 1 :(得分:2)

根据the accepted answer on this question。 您不能在样式定义中使用package com.rizze.beans.labs.sof; import static org.junit.Assert.assertTrue; import org.junit.Test; import com.google.gson.Gson; public class SOFGson { public String json = "{ \"name\": \"Logs Per Host - past 24 hours\", \"relativePathAndFileName\": \"./Elk-Reporting/Alerts/logs_per_host24h.json\", \"next_Run\": \"2017-06-07T22:24:56.682-04:00\", \"hosts\": [ \"bos-qa-app-12c\", \"bos-qa-app1-18\", \"bos-qa-wp-01\", \"bos-lt-app-02\", \"bos-qa-wp-02\", \"bos-dev-cent-04.americanwell.com\", \"bos-qa-app-06\", \"bos-qa-app-05\" ]}"; public class MyObj{ protected String name; protected String relativePathAndFileName; protected String next_Run; protected String[] hosts; } @Test public void test() { Gson gson = new Gson(); MyObj obj = gson.fromJson(json, MyObj.class); assertTrue(obj!=null); assertTrue(obj.hosts.length==8); System.out.println(gson.toJson(obj)); } } ,因为StyleSheet.create()不会返回常规的javascript对象。

但是,您可以在初始化...期间使用...,即

StyleSheet

要解决您的问题,您应该使用flatten:

const styles = StyleSheet.create({
    container: {
        ...StyleSheet.absoluteFillObject,
        top:null,
    }
})

答案 2 :(得分:1)

更改

等内容
active && 'foo'

active ? 'foo' : ''

反应原生讨厌&&任务 我认为这是包装工具中的一个错误。