小编Ami*_*aie的帖子

webpack 文件加载器相对路径

我有一个 webpack 配置文件和一个像这样的图像的示例测试:

   module: {
       rules : [
           test : /\.(jp?g|png|gif)$/,
           'file-loader?name=[name].[ext]&outputPath=images/'
       ]
   }
Run Code Online (Sandbox Code Playgroud)

我有一个像这样的简单文件结构:

/ src
    / img (1.jpg,2.jpg....)
    / css (a.css,b.css....)
    a bunch of html files
Run Code Online (Sandbox Code Playgroud)

现在,当我在 css 文件中引用图像时,我会写一些类似 url('../img/1.jpg) 的内容,因为我需要上一级并进入 img 文件夹,当我在 html 中包含图像时,我需要使用这样的东西: <img data-id="1" src="<%= require('./img/1.jpg') %>" />.


当我运行 webpack 时一切正常,但在最终的 css 文件中没有正确配置路径!我得到这样的东西:

  background: url(src/img/5.jpg); 
Run Code Online (Sandbox Code Playgroud)

但应该是

 background: url(../src/img/5.jpg);
Run Code Online (Sandbox Code Playgroud)

因为生成的 css 文件将在一个 css 文件夹中

换句话说,最终的 css 文件进入一个子文件夹,所以里面的图像引用都应该得到一个 '../' 但他们没有

我希望我足够清楚

这是我的文件结构

webpack webpack-file-loader

6
推荐指数
0
解决办法
549
查看次数

react-snap 和 react-router 一起出现问题

我需要启动一个 React 应用程序,我需要预渲染和路由,所以我安装了 react-snap 和 react-router。(react-router 执行路由,react-snap 显然用于预渲染)。

使用“npm start”在本地一切正常,但是当我进行生产构建并为其提供服务时,路由链接使页面重定向到新的 url,所以我总是看到主页。

我的渲染看起来像这样:

 render() {
    return (
      <Router>
        <React.Fragment>
          <MainNav/>
          <Route exact path="/" component={Home}/>
          <Route path="/greeting/:name/:surname" render={(props) => <Greetings text="Hello, " {...props} />} />
          <Route path="/About" component={About}/>
        </React.Fragment>
      </Router>
    );
  }
Run Code Online (Sandbox Code Playgroud)

这是 react-snap 建议的我的 index.js

import React from 'react';
import { hydrate, render } from "react-dom";
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';

const rootElement = document.getElementById("root");
if (rootElement.hasChildNodes()) {
  hydrate(<App />, rootElement);
} else { …
Run Code Online (Sandbox Code Playgroud)

react-router create-react-app react-snap

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

对象字面量内的箭头函数

我有这个对象文字

let p = {
    name : 'Amir',
    say: () => {
        console.log(this.name)
        console.log(this)
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望 say 函数可以使用这个

p.say();
Run Code Online (Sandbox Code Playgroud)

但箭头函数显然将窗口对象作为'this'. 我知道我可以使用常规函数'say'代替箭头,它会正常工作。

但是我只想更改对 say 函数的调用以使其工作,但绑定不起作用。我的意思是像p.say.bind(p)()p.say.call(p)不会按预期工作。是否可以仅更改对函数的调用而不是对 say 函数的调用?

javascript this arrow-functions

5
推荐指数
0
解决办法
2626
查看次数

React.useMemo 不更新数据

我是钩子的新手。所以这可能很容易,但我不知道如何解决:

我有一个这样的函数,它需要两个数组columnsdata. 并且这些数据应该被记住,否则它不起作用。(由 react-table 人员推荐)

function ReactTable(props) {

    const columns = React.useMemo(() => props.columns, [])

    const data = React.useMemo(() => props.data, [])

    return <Table columns={columns} data={data} />
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但是当道具发生变化时(比如从数据数组中添加或删除一个项目),React.useMemo 不会将更新的数据发送到 Table 组件。我该如何解决这个问题:(

memo rerender reactjs react-hooks

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

setState有条件地做出反应

我知道有些反应但我陷入了一种奇怪的境地.

我有两个输入和一个按钮,当两个输入都不为空时,应该启用该按钮.所以,我为每个输入值使用了一个state属性,还有一个属性告诉我两个输入是否都有值:

this.state = {
  title: '',
  time :'', 
  enabled : false
}
Run Code Online (Sandbox Code Playgroud)

我也有一个onChange为每个输入相应地设置状态:

<input type="text" id="time" name="time" onChange={this.onChange.bind(this)} value={this.state.time}></input>
<input type="text" id="title" name="title" onChange={this.onChange.bind(this)} value={this.state.title}></input>
Run Code Online (Sandbox Code Playgroud)

而onChange就是这样的

onChange(e){
    this.setState({
        [e.target.id] : e.target.value,
        enabled : ( (this.state.title==='' || this.state.time==='' ) ? false : true)
      });
  }
Run Code Online (Sandbox Code Playgroud)

问题是setState查看先前的状态,并且启用总是落后一步,所以如果我先输入X,第二次输入Y,那么启用的结果仍为false.

我设法通过使用setTimeout并在其中使用第二行来解决它,但它看起来不对我.

  onChange(e){

    this.setState({
        [e.target.id] : e.target.value,
    });

    setTimeout(() => {
      this.setState({
        enabled : ( (this.state.title==='' || this.state.time==='' ) ? false : true)
    });
    }, 0);

  }
Run Code Online (Sandbox Code Playgroud)

更好的解决方案?

javascript setstate reactjs

3
推荐指数
2
解决办法
5504
查看次数

NavLink 需要在两条路线上处于活动状态 React-Router

我有几个这样的导航链接:

<NavLink to="/dashboard" >
    <i className="icon icon-home-icon-01"></i>
</NavLink>
<NavLink to="/searchplatform" >
    <i className="icon icon-search-icon-01"></i>
</NavLink>
<NavLink to="/boxes" >
    <i className="icon icon-line-state-01""></i>
</NavLink>
Run Code Online (Sandbox Code Playgroud)

我希望第二个 Navlink 在两条路线上处于活动状态,/searchplatform并且/search/results.

而且,不,我不想有两个NavLinks明显不同的!

确实谢谢

routing nav reactjs react-router

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

React 在 componentDidUpdate 中获取新数据

我有一个组件,它从两个或三个 API 接收新闻列表。组件第一次渲染时,将调用 api 并以componentDidMount 如下方式渲染数据:

componentDidMount() {
        this.state.platforms.forEach((platform, i) => {
            let objToSend = {
                phrase: this.props.searchParams.phrase,
                // this is the main place when input data changes
                ...this.props.searchParams.general_params,
                ...this.props.searchParams.platforms[i].api_params,
                stringPath: platform,
                apiPath: this.props.searchParams.platforms[i].apiPath,
            }
            this.props.loadData(objToSend)
            // this is the api call using redux which sends data as props to this component
 }
Run Code Online (Sandbox Code Playgroud)

new 当短语更改时,我希望此组件重新渲染并重新运行 componentDidMount,但它不起作用,因为 componentDidMount 将运行一次。所以我使用了componentDidUpdate,但是由于有很多调用,所以api正在不断更新。

每次更改短语时,如何使组件重新渲染并重新运行 componentDidMount

components render reactjs lifecycle-hook

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

如何在 amp-list 中插入 html 内容

我有一个像这样的 json 文件:

{
  items: [
    {
       FullImage: "87acaed5c90d.jpg",
       Title: "sometext",
       description: "<p id="imagenews"><img src='something'></p>" ,
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

如何将描述作为 html 插入到 div 中?我试过

<div>{{description}}</div> 
Run Code Online (Sandbox Code Playgroud)

但它被视为普通字符串。

json amp-html

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

ES6解构从内部数组中获取第n个项目

我的React项目中有一个数组.就像是 :

state = {
   cats : [
      {cid : 1 , value : 1}
      {cid : 2 , value : 3}
      {cid : 3 , value : 4}
   ],
   curpage : 3
}
Run Code Online (Sandbox Code Playgroud)

现在我想要的是用destructring 获取nth item数组cats.我试过了

const { cat : {cats[id]} } = this.state;
Run Code Online (Sandbox Code Playgroud)

要么

 const { cats[id] } = this.state;
Run Code Online (Sandbox Code Playgroud)

javascript destructuring ecmascript-6

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

基于react中的props渲染动态html元素

我有一个组件,它接收一堆值作为 props,其中有一个带有字符串值的 prop,它定义了“要返回的输出 html”的类型。

像这样的东西,这当然是错误的

const WithScrollingText = ({text,boxWidth,tag}) => {
    return boxWidth > 100
    ?   <tag>{text}</tag>
    :   <div className="with-scrolling-text"><div>{text}</div></div>
}
Run Code Online (Sandbox Code Playgroud)

我会像这样调用/使用这个组件:

<WithScrollingText text="Something" boxWidth={250} tag="span"/>
<WithScrollingText text="Something else" boxWidth={250} tag="div"/>
Run Code Online (Sandbox Code Playgroud)

等等

如何修复渲染,以便当我将“span”发送到组件时,它会渲染并返回一个跨度

javascript jsx reactjs

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

列出在mssql中销售最多的客户

我是sql的新手.我必须选择销量最高的前3家公司

公司表:CompanyId,Compnayname等

订单表:OrderId,companyId,价格等

选择前三名公司名称(从ordes中选择总和(价格))作为最大公司订单的最大描述?

我想我需要加入这些但我无法找到解决方法

sql-server join multi-select

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