在React Native组件中,如果在props分配中使用了spread运算符,则会出现错误,"在此环境中,assign的目标必须是一个对象。此错误是性能优化,不符合规范。"扔了。
例如,在渲染功能
中const { style } = props;
return (
<View style={{borderWidth: 1, ...style}}>
同时
const { style } = props;
return (
<View style={{borderWidth: 1, paddingLeft: 1}}>
的工作原理。为什么扩展语法会影响性能?
答案 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' : ''
反应原生讨厌&&
任务
我认为这是包装工具中的一个错误。