小编zie*_*lah的帖子

使用Webpack时,使用es6命名导入是否会减少捆绑包的大小

我需要了解何时使用这样的命名导入

import { render } from 'react-dom'
Run Code Online (Sandbox Code Playgroud)

webpack是否仅在捆绑包中包含render方法或整个模块,特别是在通过 babel配置将模块设置为false 来使用摇树时,让webpack照顾它们吗?

同样在导入的情况下

import React from 'react'
Run Code Online (Sandbox Code Playgroud)

&&

import React, { Component, PropTypes } from 'react'
Run Code Online (Sandbox Code Playgroud)

正确的方法是什么?

reactjs webpack babeljs

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

在lodash中节流和去抖的区别

来自lodash文档:

风门

创建一个限制函数,每个等待毫秒最多只调用一次func

防抖动

创建一个去抖动函数,该函数延迟调用func,直到自上次调用去抖动函数后经过等待毫秒之后

我对这两个定义有点困惑,听起来它们是相似的.

有人可以用例子给我们一个简单的解释.

javascript function lodash

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

反应合成事件的流类型错误

我实际上正在尝试学习 flowtype。在我的 React 应用程序中,我有一个可重用的 TextArea 组件,这是 props 声明:

type props = {
  fill?: boolean,
  large?: boolean,
  blue?: boolean,
  red?: boolean,
  onChange: (
    e: SyntheticEvent<HTMLInputElement> & { currentTarget: HTMLInputElement },
  ) => void,
  value: string
};
Run Code Online (Sandbox Code Playgroud)

当我在其他组件中重用它时:

<TextArea value={this.state.note} onChange={this.changeNote} />
Run Code Online (Sandbox Code Playgroud)

更改注释方法:

  changeNote = (
    e: SyntheticEvent<HTMLInputElement> & { currentTarget: HTMLInputElement },
  ) => {
    this.setState({ note: e.currentTarget.value });
  };
Run Code Online (Sandbox Code Playgroud)

运行流程时出现此错误:

app/components/pages/bills/BillAddPage.js:256
256:           <TextArea value={this.state.note} onChange={this.changeNote} />
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ React element `TextArea`
 21:     e: SyntheticEvent<HTMLInputElement> & { currentTarget: HTMLInputElement },
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ intersection …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs flowtype

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

window.open() 在反应应用程序中不起作用

我有一个如下所示的反应应用程序:我有一个按钮,单击它时它将打开一个弹出窗口,其中包含要打印的票证,单击处理程序从父组件传递到按钮,我希望完成相同的过程在父组件内部

export default class ParentComponent extends Component {
  openWindow = id => {
    window.open('/service/ticket/' + id + '/print')
  }

  submitPayment = () => {
    sendPayment(this.state.rawCommand.id, updatedCommand.payment) 
      .then(payment => {
        if (payment.needed > 0) { 
          toastr.success(dictionnary.acceptedPayment)
        } else {
          toastr.success(dictionnary.payee) 
          this.openWindow(updatedCommand.id)
        } 
      }

  render () {
    <Printer printTicket={this.openWindow} />
  }
}
Run Code Online (Sandbox Code Playgroud)

const Printer = ({printTicket, id}) => {
  const clickHandler = () => printTicket(id)

  return (
    <button onClick={clickHandler}>print</button>
  )
}
Run Code Online (Sandbox Code Playgroud)

问题是,当单击 Printer 组件中的按钮时,窗口会按预期打开,但是当从父组件调用 openWindow 单击处理程序时,什么也没有发生!

我检查了 chrome devtools 中的代码,该函数被调用,但弹出窗口未打开。

编辑 …

javascript dom-events reactjs

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