小编Ale*_*lex的帖子

使用 NextJS 自托管字体

我正在尝试使用 NextJS 应用程序自行托管网络字体,但遇到了麻烦。这是浏览器尝试访问这些字体的 URL:

localhost:3000/_next/static/css/fonts/Avenir.woff2
Run Code Online (Sandbox Code Playgroud)

实际路径是:

_project_dir/static/fonts/Avenir.woff2
Run Code Online (Sandbox Code Playgroud)

我尝试将链接包含在 _app.js 中,它确实下载了字体,但文本仍然没有样式。

localhost:3000/_next/static/css/fonts/Avenir.woff2
Run Code Online (Sandbox Code Playgroud)

这是我的_app.js


  render() {
    const { Component, pageProps } = this.props;
    return (
      <Container>
        <link href="https://fonts.googleapis.com/css?family=Poppins:500,500i,600&display=swap" rel="stylesheet" />
        <link rel="preload" as="font" href="/static/fonts/Avenir.woff2" type="font/woff2" crossorigin />
        <link rel="preload" as="font" href="/static/fonts/AvenirHeavy.woff2" type="font/woff2" crossorigin />
        <Head>
          <title>Project</title>
        </Head>
        <Provider store={store}>
          <PersistGate loading={null} persistor={persistor}>
            <Component pageContext={this.pageContext} {...pageProps} />
          </PersistGate>
        </Provider>
      </Container>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

我的main.css

_project_dir/static/fonts/Avenir.woff2
Run Code Online (Sandbox Code Playgroud)

和我的next.config.js

<link rel="preload" as="font" href="/static/fonts/Avenir.woff2" type="font/woff2" crossorigin />
Run Code Online (Sandbox Code Playgroud)

javascript webfonts reactjs web-performance next.js

10
推荐指数
2
解决办法
1万
查看次数

反应 | Ant design select值未设置

我正在尝试将“全选”/“取消全选”添加到 React Antd 的“SELECT”组件中。

我的代码

const models = ['A4', 'A6', 'A8', 'A1', 'Q3', 'Q5'];
const [selected, setSelected] = useState({
  models: [],
});

console.log('selected', selected);

const handleModelSelect = (option) => {
  if (option === 'all') {
    if (selected.models.length === models.length) {
      setSelected((prev) => ({ ...prev, models: [] }));
    } else {
      setSelected((prev) => ({ ...prev, models }));
    }
  } else {
    setSelected((prev) => ({ ...prev, models: uniq([...prev.models, option]) }));
  }
};

return
(<Form>
  <Form.Item
    name="model"
    style={{ display: 'inline-block', width: 'calc(33% - …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs antd

6
推荐指数
1
解决办法
1万
查看次数

如何在 NextJs 中缓存字体?

我有两种字体,我试图向用户显示,而没有 FOIT,相反,我有一个 FOUT,我希望用户不要在每次重新访问页面时重新下载字体。

我添加了字体观察器来添加额外的 FOUT 回退功能。_document.js

  componentWillMount() {
    if (process.browser) {
      const html = document.documentElement;
      html.classList.add('fonts-loading');
      const fontPoppins = new FontFaceObserver('Poppins');
      fontPoppins.load(null, 5000).then(() => {
        console.log('Poppins font has loaded.');
        html.classList.remove('fonts-loading');
        html.classList.add('fonts-loaded');
      }).catch(() => {
        html.classList.remove('fonts-loading');
        html.classList.add('fonts-failed');
      });
      const fontAvenir = new FontFaceObserver('Avenir');
      fontAvenir.load(null, 5000).then(() => {
        console.log('Avenir font has loaded.');
      }).catch(() => {
        html.classList.remove('fonts-loading');
        html.classList.add('fonts-failed');
      });
    }
  }
... (more code here)

render ( code here ) ...

// Additional FOUT?
        <Head>
          <link
            href="https://fonts.googleapis.com/css?family=Poppins:200,300,400,600,700,800,900&display=swap"
            rel="preload"
            as="font"
          />
           ... (more code …
Run Code Online (Sandbox Code Playgroud)

javascript caching reactjs next.js

5
推荐指数
1
解决办法
2553
查看次数

raw无法解析或不是字段错误(Eclipse/Android/Java)

由于一些奇怪的原因,我收到此错误: raw cannot be resolved or is not a field

我正在尝试做以下事情

   MediaPlayer click = MediaPlayer.create(this, R.raw.button_click.mp3);
Run Code Online (Sandbox Code Playgroud)

在我的onCreate方法中.

我已经检查过文件夹和mp3文件了,就是这样<project-name>/raw/button_click.mp3.我试过了:

  • 清理我的项目
  • 重启Eclipse
  • 制作R.raw.button_click
  • 检查一切是否小写和拼写正确

请帮忙!

java eclipse android

4
推荐指数
1
解决办法
7645
查看次数

将CSS/HTML中的按钮水平对齐w/text一行?

我想知道如何水平对齐我的按钮?最重要的是,我想在这些按钮上添加文字.这就是我现在拥有的.

HTML正文部分:

<body> 
    <div class="tile_div">
        <table class="tile_table">
            <tr>
                <td>
                    <img class="tile_image" height="50px" width="100px" src="./images/button_left.png"/> 
                    <p class="tile_p">Button one</p>
                </td>
                <td>
                    <img class="tile_image" height="50px" width="100px" src="./images/button_left.png"/> 
                    <p class="tile_p">Button two</p>
                </td>
                <td>
                    <img class="tile_image" height="50px" width="100px" src="./images/button_left.png"/> 
                    <p class="tile_p">Button three</p>
                </td>
            </tr>
        </table>
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

CSS:

.tile_image {
    float: left;
    margin: 0px;
}

.tile_image img {
    position:absolute;
}

.tile_p {
    text-align:center;
    position:relative;
}
Run Code Online (Sandbox Code Playgroud)

看起来如何:http: //img580.imageshack.us/img580/8867/uo7i.png

我希望文本位于不在它们下面的按钮中间.

编辑:

好吧,所以当我使用 src="./images/button_left.png"图像看起来它应该看起来:

http://img580.imageshack.us/img580/8867/uo7i.png
Run Code Online (Sandbox Code Playgroud)

但是当我使用背景图像时会发生这种情况:http: //img580.imageshack.us/img580/6127/yz4.png

html css

3
推荐指数
1
解决办法
4万
查看次数

用表情符号替换字符串的最有效方法

什么是替换文本的最有效方法:)->。

因此,假设我有一个类似“ Hello :)我叫亚历克斯”的文字。我应该将文本转换为“你好,我叫亚历克斯”

我在lodash实用程序库的帮助下解决了这个问题。

const replaceStringWithEmoji = (string) => {
  const emojiMap = {
    ':)': '',
    ':(': '',
    ':D': '',
    ';(': '',
    ':O': '',
    ';)': '',
    '8)': '',
    '>:@': '',
  };

  const emojis = [...Object.keys(emojiMap)];
  return _.join(_.map(_.split(string, ' '), (s) => {
    if (_.includes(emojis, s)) {
      return emojiMap[s];
    }
    return s;
  }), ' ');
};
Run Code Online (Sandbox Code Playgroud)

必须有一种更好的方法。也许与正则表达式?

短期回报

 return _.join(_.map(_.split(string, ' '), s => _.includes(emojis, s) ? emojiMap[s] : s), ' '); 
Run Code Online (Sandbox Code Playgroud)

javascript regex lodash reactjs

2
推荐指数
1
解决办法
68
查看次数

使用 NextJs 的 GTM

在 NextJs(启用 SSR)应用程序上注册路由更改事件时遇到问题。我在 GTM 中使用历史更改事件触发器。

使用react-gtm-module初始化 Google 标签管理器。

问题:事件在装载时触发,路线例如。www.site.com/product/123 但是当我从页面 /product/123/ 导航到像 /product/124/ 这样的页面时,事件不会触发。

产品页面:

return (
<div>
  <div>{props.title}</div>
  <Link href="/product/[pid]" as={`/product/124`}>
    <a>Another product (should trigger event here, but doesn't)</a>
  </Link>
</div>
)
Run Code Online (Sandbox Code Playgroud)

我曾尝试将此添加到 _app.js (componentDidMount)

     import Router from 'next/router';
      ...
      componentDidMount () {
      ...
      if (process.browser) {
      Router.onRouteChangeComplete = url => {
        window.history.pushState({}, document.title, url);
      };
    }
Run Code Online (Sandbox Code Playgroud)

在 NextJs 中这样做的正确方法是什么?

reactjs next.js

1
推荐指数
1
解决办法
3351
查看次数

如何使int在随机生成时不被使用两次?

我为Android编写了一个简单的问答游戏,目前我在问题显示后没有出现问题,我不想让它两次问我同样的问题.

这是我使用的方法

 private void QBegin() {
   /*
    * Gets a random question
    */
    question = (TextView) findViewById(R.id.question);
    String[] types = { "Question one",
            "Question two", 
            "Question three", 
            "Question four",
            "Question five"};
    Random random = new Random();
    int qType = random.nextInt(types.length);
    question.setText(types[qType]);
    getAnswers(qType); //gets four answers
}
Run Code Online (Sandbox Code Playgroud)

我不确定这是否可行但是,如果我添加类似的东西怎么办?

编辑:不起作用..

    int i = 0;
    ArrayList<Integer> list = new ArrayList<Integer>();
    list.add(qType);
    i++;
    if(list.contains(qType) && i != types.length + 1){
        return;
    } else {
        answerCounter.setText("Hit the bricks pal, you're done..");
    }
Run Code Online (Sandbox Code Playgroud)

编辑2:被告知添加这样的东西,但我没有想法我现在应该做什么...

    ArrayList<Integer> list …
Run Code Online (Sandbox Code Playgroud)

java eclipse android

0
推荐指数
1
解决办法
808
查看次数