【问题标题】:Prettier web usage更漂亮的网络使用
【发布时间】:2021-04-15 13:58:57
【问题描述】:

我尝试使用 react 应用格式化输入文本。我在这里想要实现的是,这个组件从 props 获取文本输入,它通过所需的“traslator”函数,并在右侧编写翻译后的代码。我希望这个新文本 const newInput = string 通过更漂亮的格式进行格式化。 Prettier 正在网络上工作,所以应该没什么大不了的,但是当我尝试使用 prettier.format() 函数时,它就不起作用了。

我看不到任何不能在 React 中使用的东西,但它仍然无法工作,并说它无法解析导入,这可以在 react 组件的顶部看到。 那么我该如何实现这一点,或者任何其他关于格式化任何输入文本“更漂亮”的建议?

这是该函数的原始文档:

 <script type="text/javascript">
    var formatButton = document.querySelector("#format");
    var textInput = document.querySelector("#input");
    formatButton.addEventListener("click", function() {
      var value = textInput.value;
      textInput.value = prettier.format(value, {
        parser: "babylon",
        plugins: prettierPlugins
      });
    });
  </script>

这是我目前的代码:

import React from "react";

//prettier imports
import prettier from "https://unpkg.com/prettier@2.2.1/esm/standalone.mjs";
import parserBabel from "https://unpkg.com/prettier@2.2.1/esm/parser-babel.mjs";
import parserHtml from "https://unpkg.com/prettier@2.2.1/esm/parser-html.mjs";

const Display = (props) => {
  const { input, isToggled } = props;

  // entity to HTML
  const tagsToReplace = {
    "&": "&amp;",
    "&lt;": "<",
    "&gt;": ">",
    "&nbsp;": " ",
  };

  const newInput = input.toString().replace(/&lt;|&gt;/gi, function (matched) {
    return tagsToReplace[matched];
  });

  //HTML to entity
  const tagsToReplaceBack = {
    "<": "&lt;",
    ">": "&gt;",
  };
  const changeBackInput = input.toString().replace(/<|>/gi, function (matched) {
    return tagsToReplaceBack[matched];
  });

  const formattedInput = prettier.format(newInput, {
    parser: "babel",
    plugins: [parserBabel, parserHtml],
  });


  return <div>{formattedInput}</div>;
};

export default Display;

/* {isToggled ? <div>{changeBackInput}</div> : <div>{newInput}</div>} */

【问题讨论】:

  • Prettier 是一个编译时库,而不是运行时库。它格式化您的 --code -- 而不是您的标记。
  • 嗯,我的错。请原谅我的无知,直到现在我才看到 Prettier 的用法!
  • 这一切都很酷!我也不想听起来太刺耳,

标签: reactjs prettier


【解决方案1】:

我认为您的捆绑程序(可能是 webpack?)不支持从 URL 导入模块。您需要从 npm 安装 Prettier 作为依赖项,并以与导入 React 相同的方式导入它。例如。请参阅此 Codesandbox:https://codesandbox.io/s/async-worker-2oul0?file=/src/App.js

【讨论】:

  • 或者将更漂亮的扩展添加到您的代码编辑器中。
  • 编辑器扩展与问题无关
  • 啊,我明白了。没有正确阅读问题。
猜你喜欢
  • 2013-03-14
  • 2020-11-21
  • 1970-01-01
  • 2021-05-07
  • 1970-01-01
  • 2020-02-13
  • 2021-06-02
  • 2021-06-22
  • 1970-01-01
相关资源
最近更新 更多