包含“%d”的字符串正在转换为 'NaN'

String containing '%d' being converted to 'NaN'

我正在 react-native webview 中渲染 ZingChart。我需要使用 %data-day 访问 zingchart 的令牌,但每当我尝试使用 %d 时,它都会打印 NaN

下面是示例代码:

import React, { Component } from 'react';
import { Text, View, WebView } from 'react-native';

export default class App extends Component {
  constructor(props) {
    super(props);
  }
  renderWeb = () => {
    return `
      <html>
        <head>
        </head>
        <body>
        <script>
          ${console.log('%d', ':data')}
          </script>
        </body>
      </html>
      `;
  };
  render() {
    return (
      <View style={{ flex: 1 }}>
        <WebView source={{ html: this.renderWeb() }} />
      </View>
    );
  }
}

谁能帮我解决这个问题?

console.log 的第一个参数被视为格式字符串,其中百分比字符引入替换序列。它们大致基于 C 中 printf 函数使用的格式字符串。请参阅 MDN 的 console article 中的 "Using string substitutions"。

%d 使用调用 console.log 的下一个未使用参数并将其格式化为数字。由于 ':data' 不是数字,因此在浏览器中测试时 Chrome 将其转换为日志中的字符串 'NAN' 。然而,它取决于浏览器 - Firefox 将其转换为零。

要记录字符串“%d”,将百分号加倍并在格式字符串中将其编码为“%%d”。就像在 C 中一样 :-)