小编ava*_*hzh的帖子

使用React Hooks重置为初始状态

我目前正在使用注册表单,以下是我的代码段:

const Signup = () => {
    const [username, setUsername] = useState('')
    const [email, setEmail] = useState('')
    const [password, setPassword] = useState('')
    const [passwordConfirmation, setPasswordConfirmation] = useState('')

    const clearState = () => {
        setUsername('')
        setEmail('')
        setPassword('')
        setPasswordConfirmation('')
    }

    const handleSubmit = signupUser => e => {
        e.preventDefault()
        signupUser().then(data => {
            console.log(data)
            clearState() // <-----------
        })
    }

    return <JSX />
}

export default Signup
Run Code Online (Sandbox Code Playgroud)

每个状态都用于表格的受控输入。

本质上,我想做的是在用户成功注册后,希望状态恢复为初始状态,并清除字段。

手动将每个状态设置回空字符串是非常必要的,clearState因为我想知道React是否附带有方法或函数来将状态重置为初始值?

reactjs react-hooks

25
推荐指数
4
解决办法
2万
查看次数

使用酶进行测试时,使用React Hook访问功能组件的状态

我想知道如何使用useState带有酶的钩子测试功能组件的状态变化。通常情况下,测试是类似的,expect(wrapper.state()).toEqual(expectedState)但是我得到了错误:

ReactWrapper::state() can only be called on class components
Run Code Online (Sandbox Code Playgroud)

我知道Hooks仍处于alpha阶段,并且诸如此类的东西shallow仍然无法正常工作,但我想知道是否有解决办法?

reactjs enzyme react-hooks

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

重构 pure() 与 React.PureComponent

Recompose 库中的 pure() 和 React.PureComponent 有什么区别?我猜他们基本上是在解决同样的问题。有人可以澄清一下吗?

javascript reactjs recompose

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

在 VSCode 中使用 Prettier 在保存时切换自动格式

99% 的情况下,我希望 VSCode 在使用 Prettier 保存时自动格式化我的文件。对于那 1% 的时间,有没有办法以比进入设置然后手动打开和关闭它更快的方式将其关闭?

我试过寻找任何键盘绑定,但我找到的唯一一个是 prettier.open-output

visual-studio-code vscode-settings prettier

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

React Native packager.sh:第11行:node:未找到命令

我使用Create-React-Native-App启动了一个新项目,然后从项目中退出.我按照React-Native文档的说明在Android Studio上打开了一个虚拟设备并运行yarn android以构建应用程序.然后我收到此错误消息:

在此输入图像描述

我目前正在使用Node 8.11.1,命令在我的终端上正常工作.我用NVM安装了它.

在packager.sh文件中,这是第11行:

node "./local-cli/cli.js" start "$@"

这是我.bashrc.bash_profile文件:

的.bashrc

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)

# Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
export PATH="$PATH:$HOME/.rvm/bin"
Run Code Online (Sandbox Code Playgroud)

.bash_profile中

[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile …
Run Code Online (Sandbox Code Playgroud)

android reactjs react-native android-studio-2.3

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

“意外令牌,预期”,当我尝试进行条件渲染以与无状态功能组件反应时

这是我的代码:

'use strict'

import React from 'react'
import { connect } from 'react-redux'
import { Panel, Col, Row, Well, Button } from 'react-bootstrap'

const Cart = ({ cart }) => {

  const cartItemsList = cart.map(cartArr => (
    <Panel key={cartArr.id}>
      <Row>
        <Col xs={12} sm={4}>
          <h6>{cartArr.title}</h6>
        </Col>
      </Row>
    </Panel>
  ));

  return (
    { cart[0] &&
      (<Panel header="Cart" bsStyle="primary">
        {cartItemsList}
      </Panel>)
    }
    { !cart[0] &&
      (<div></div>)
    }
    // {
    //   cart[0] ? (<Panel header="cart" bsStyle="primary">{cartItemsList}</Panel>) : (<div></div>);
    // }
  )
}

const mapStateToProps …
Run Code Online (Sandbox Code Playgroud)

javascript conditional reactjs

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

VSCode 中自定义 JSX 组件的选项卡快捷方式

我刚刚从 Atom 切换到 VSCode。

当我使用 Atom 并在.js文件中输入 JSX 时,我可以输入任何内容并按下tab它,它会将我的选项卡转换为自定义组件。例如,asdf然后tab会给<asdf></asdf>.

现在我有 VSCode 和 Emmet,但这仅在某些时候有效。我已经尝试过 Emmet,除了基本的自定义组件外,一切正常

所有 HTML 标签都按预期工作。即div.blue&tab返回<div className="blue"></div>

嵌套工作asdf>jkltab返回

<asdf>
    <jkl></jkl>
</asdf>
Run Code Online (Sandbox Code Playgroud)

出于某种原因,添加冒号会触发它。as:df&tab返回<as:df></as:df>asdf&tab不返回<asdf></asdf>。我只是让我的光标向前移动。

我不确定 Intellisense 或 Snippets 是否以某种方式干扰。我安装的相关扩展是 JavaScript 和 TypeScript Intellisense v0.0.7、Javascript Snippet Pack v0.1.5 和 simple React Snippets 1.2.2。

这是我的设置:

{
    "editor.formatOnSave": true,
    "editor.tabSize": 2,
    "editor.wordWrap": "on", …
Run Code Online (Sandbox Code Playgroud)

keyboard-shortcuts jsx emmet visual-studio-code

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