Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在对象文本中进行字符串添加的方法_Javascript_String_Reactjs - Fatal编程技术网

Javascript 在对象文本中进行字符串添加的方法

Javascript 在对象文本中进行字符串添加的方法,javascript,string,reactjs,Javascript,String,Reactjs,我可以在对象文本中添加一些字符串吗 如果我使用height,Chrome会给我以下错误消息:“calc(100%-'+字符串(this.padding)+'px*2)” [ProjectContainer.js:15]未捕获类型错误:无法读取属性 未定义的“填充” 但是,如果我将其作为一个函数,则不会显示错误消息,但css似乎不起作用。这可能是因为内联样式系统不将其作为函数调用,而是作为变量调用 var styles = { root: { display: 'flex'

我可以在对象文本中添加一些字符串吗

如果我使用
height,Chrome会给我以下错误消息:“calc(100%-'+字符串(this.padding)+'px*2)”

[ProjectContainer.js:15]未捕获类型错误:无法读取属性 未定义的“填充”

但是,如果我将其作为一个函数,则不会显示错误消息,但css似乎不起作用。这可能是因为内联样式系统不将其作为函数调用,而是作为变量调用

var styles = {
    root: {
        display: 'flex',
        flexWrap: 'wrap',
        textAlign: 'left',
        padding: 10,
        height: function() {return 'calc(100% - ' + String(this.padding) + 'px * 2)'},
        width: 'calc(100% - 10px * 2)',
        overflowY: 'scroll'
    }
}
将高度设置为“calc(100%-10px*2)”的最佳方法是什么?

您可以试试这个

var styles = {
    root: {
        display: 'flex',
        flexWrap: 'wrap',
        textAlign: 'left',
        padding: 10,

        width: 'calc(100% - 10px * 2)',
        overflowY: 'scroll'
    }, 
    init: function() {
       this.root.height = 'calc(100% - ' + String(this.root.padding) + 'px * 2)';
       delete this.init; 
       return this;
    },
}.init()
你可以试试这个

var styles = {
    root: {
        display: 'flex',
        flexWrap: 'wrap',
        textAlign: 'left',
        padding: 10,

        width: 'calc(100% - 10px * 2)',
        overflowY: 'scroll'
    }, 
    init: function() {
       this.root.height = 'calc(100% - ' + String(this.root.padding) + 'px * 2)';
       delete this.init; 
       return this;
    },
}.init()

如注释中所述,在定义对象文字时,不能使用
this
引用对象文字。相反,它将引用当前代码范围内的全局
this
,或
this
。基本上,当您仍在定义对象文字时,您不能使用该对象文字的属性,您需要在之后这样做:

var样式={
根目录:{
显示:“flex”,
flexWrap:“wrap”,
textAlign:'左',
填充:10,
高度:“”,//可选
宽度:“计算(100%-10px*2)”,
溢出:“滚动”
}
}
styles.root.height='calc(100%-'+字符串(styles.root.padding)+'px*2';

console.log(样式)如注释中所述,在定义对象文字时,不能使用
this
引用对象文字。相反,它将引用当前代码范围内的全局
this
,或
this
。基本上,当您仍在定义对象文字时,您不能使用该对象文字的属性,您需要在之后这样做:

var样式={
根目录:{
显示:“flex”,
flexWrap:“wrap”,
textAlign:'左',
填充:10,
高度:“”,//可选
宽度:“计算(100%-10px*2)”,
溢出:“滚动”
}
}
styles.root.height='calc(100%-'+字符串(styles.root.padding)+'px*2';

console.log(样式)在声明期间,不能在对象文本中使用
this
来正确引用<代码>JavaScript中的此
用于函数范围

下面的示例显示了问题的可能解决方案。 基本上,在函数范围中定义
填充
,并在对象文字声明中检索它

在大多数情况下,其值由函数的运行方式决定 打电话。它不能在执行期间通过赋值进行设置,可能是 每次调用函数时都会有所不同

函数foo(){
this.padding=10;//只声明一次
变量样式={
根目录:{
显示:“flex”,
flexWrap:“wrap”,
textAlign:'左',
填充:这个,填充,
高度:'calc(100%-'+字符串(this.padding)+'px*2',
宽度:“计算(100%-10px*2)”,
溢出:“滚动”
}
};
console.log(styles.root);
};

foo()在声明期间,不能在对象文本中使用
this
来正确引用<代码>JavaScript中的此
用于函数范围

下面的示例显示了问题的可能解决方案。 基本上,在函数范围中定义
填充
,并在对象文字声明中检索它

在大多数情况下,其值由函数的运行方式决定 打电话。它不能在执行期间通过赋值进行设置,可能是 每次调用函数时都会有所不同

函数foo(){
this.padding=10;//只声明一次
变量样式={
根目录:{
显示:“flex”,
flexWrap:“wrap”,
textAlign:'左',
填充:这个,填充,
高度:'calc(100%-'+字符串(this.padding)+'px*2',
宽度:“计算(100%-10px*2)”,
溢出:“滚动”
}
};
console.log(styles.root);
};
foo()您可以执行以下操作:

var样式=(函数(){
变量填充='10';
返回{
根目录:{
显示:“flex”,
flexWrap:“wrap”,
textAlign:'左',
填充:+填充,
高度:“计算(100%-”+填充+px*2)”,
宽度:“计算(100%-10px*2)”,
溢出:“滚动”
}
})();
这使用了一些有趣的Javascript技术,例如:

  • 立即调用的函数表达式()
  • 将字符串
    '10'
    强制转换为数字
这样做的优点是不仅可以在单个表达式中完成,而且更易于阅读和理解

您可以对其进行修改,使填充值可以从外部传入,而几乎不需要新的工作:

var styles=(函数(填充){
var padding=padding?padding:'10';
返回{
根目录:{
显示:“flex”,
flexWrap:“wrap”,
textAlign:'左',
填充:+填充,
高度:“计算(100%-”+填充+px*2)”,
宽度:“计算(100%-10px*2)”,
溢出:“滚动”
}
})(填充);
您可以执行以下操作:

var样式=(函数(){
变量填充='10';
返回{
根目录:{
显示:“flex”,
flexWrap:“wrap”,
textAlign:'左',
填充:+填充,
高度:“计算(100%-”+填充+px*2)”,
宽度:“计算(100%-10px*2)”,
溢出:“滚动”
}
})();
这使用了一些有趣的Javascript技术,例如:

  • 立即调用的函数表达式()
  • 将字符串
    '10'
    强制转换为数字
这样做的优点是不仅可以在单个表达式中完成,而且更易于阅读和理解

您可以对其进行修改,使填充值可以从外部传入,而几乎不需要新的工作:

var styles=(函数(填充){
var padding=padding?padding:'10';
返回{
根目录:{