ReactJS:状态更改时元素不会更新

合资公司

我有一个像这样设置的 React 组件:

export default class FormDialog extends React.Component {
  constructor(){
    super();
    this.state = {allowedToDelete: false};
  }
  onChange(event) {

    if (event.target.value.match(this.targetName)) {
      console.log("It's a match!");
      this.state = {allowedToDelete: true};
      console.log(this.state); 
    } else {
      this.state = {allowedToDelete: false};
    }
  }

  render() {
    const { profile, deleteUser, handleDialogClose, ...other } = this.props;
    this.targetName = `${profile.firstName} ${profile.lastName}`;
    console.log({...other})

    return (
      <Dialog {...other}>
        <DialogTitle id="form-dialog-title">Delete this user?</DialogTitle>
        <DialogContent>
          <DialogContentText>
            allowedToDelete: {String(this.state.allowedToDelete)}
          </DialogContentText>
          <TextField
            autoFocus
            margin="dense"
            id="name"
            label="User's Full Name"
            type="text"
            fullWidth
            onChange={this.onChange.bind(this)}
          />
        </DialogContent>
        <DialogActions>
          <Button variant="outlined" onClick={this.handleDialogClose} color="primary">
            Cancel
          </Button>
          <Button variant="outlined" onClick={this.deleteUser} disabled={!this.state.allowedToDelete} color="primary">
            Delete User! 
          </Button>
        </DialogActions>
      </Dialog>
    );
  }
}

(我在这里使用 material-ui 的表单对话框组件)。

如上,提示用户键入他们要删除的配置文件的全名;如果它们匹配名称,则“删除用户!” 按钮应变为未禁用状态。

我的onChange()事件是工作,因为当我键入正确的名字,我看到It's a match!在我的控制台和日志this.state显示,this.state.allowedToDelete === true

但是,我的渲染功能allowedToDelete: {String(this.state.allowedToDelete)}和我的按钮disabled={!this.state.allowedToDelete}都保持false.

我在这里做错了什么?我是 React 的新手,我对状态的理解可能会感到困惑,但是我尝试使用直接附加到this状态而不是状态的变量来执行此操作,但这也不起作用......

马特迪奥

你需要打电话setState你可以在 react docs 中阅读它这就是告诉 React 组件触发生命周期以显示新状态的原因。

this.setState({allowedToDelete: false});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过javascript更改值时元素不更新错误状态

来自分类Dev

React JS组件不会在状态更改时更新

来自分类Dev

父状态更改时子组件不会更新

来自分类Dev

属性更改时,聚合物元素不会触发“ on- <property> -changed”事件

来自分类Dev

状态更改时,AppWidget主页不会更改

来自分类Dev

剔除observableArray元素不会更新视图

来自分类Dev

状态更改时,React不会重新渲染

来自分类Dev

当我的API更改时,用useState创建的React状态不会自动更新

来自分类Dev

反应useCallback不会在第一次更改时更新状态onChange

来自分类Dev

当值更改时,useEffect挂钩中定义的函数内的状态变量不会更新

来自分类Dev

React Native:基于Array.map()的渲染组件不会在状态更改时更新

来自分类Dev

当我的API更改时,用useState创建的React状态不会自动更新

来自分类Dev

Redux 存储不会在状态更改时更新组件视图

来自分类Dev

ReactJs 渲染不会在数据更改时正确更新

来自分类Dev

在Vuex存储状态更改时更新DOM

来自分类Dev

组件未在 redux 状态更改时更新

来自分类Dev

状态更改时组件不更新

来自分类Dev

当原始对象更改时,绑定不会更新

来自分类Dev

保存更改时,Grunt不会更新脚本

来自分类Dev

ObservableCollection对象更改时,不会更新ListView

来自分类Dev

属性更改时,UI不会更新

来自分类Dev

道具更改时子组件不会更新

来自分类Dev

更改@State后SwfitUI元素不会更改

来自分类Dev

更改时更新选择元素数据

来自分类Dev

ngIf中的绑定元素不会更新绑定

来自分类Dev

React组件不会在状态更改时重新呈现

来自分类Dev

状态更改时不会发生重新渲染

来自分类Dev

反应不会在状态更改时重新呈现

来自分类Dev

组件不会在状态更改时重新呈现

Related 相关文章

  1. 1

    通过javascript更改值时元素不更新错误状态

  2. 2

    React JS组件不会在状态更改时更新

  3. 3

    父状态更改时子组件不会更新

  4. 4

    属性更改时,聚合物元素不会触发“ on- <property> -changed”事件

  5. 5

    状态更改时,AppWidget主页不会更改

  6. 6

    剔除observableArray元素不会更新视图

  7. 7

    状态更改时,React不会重新渲染

  8. 8

    当我的API更改时,用useState创建的React状态不会自动更新

  9. 9

    反应useCallback不会在第一次更改时更新状态onChange

  10. 10

    当值更改时,useEffect挂钩中定义的函数内的状态变量不会更新

  11. 11

    React Native:基于Array.map()的渲染组件不会在状态更改时更新

  12. 12

    当我的API更改时,用useState创建的React状态不会自动更新

  13. 13

    Redux 存储不会在状态更改时更新组件视图

  14. 14

    ReactJs 渲染不会在数据更改时正确更新

  15. 15

    在Vuex存储状态更改时更新DOM

  16. 16

    组件未在 redux 状态更改时更新

  17. 17

    状态更改时组件不更新

  18. 18

    当原始对象更改时,绑定不会更新

  19. 19

    保存更改时,Grunt不会更新脚本

  20. 20

    ObservableCollection对象更改时,不会更新ListView

  21. 21

    属性更改时,UI不会更新

  22. 22

    道具更改时子组件不会更新

  23. 23

    更改@State后SwfitUI元素不会更改

  24. 24

    更改时更新选择元素数据

  25. 25

    ngIf中的绑定元素不会更新绑定

  26. 26

    React组件不会在状态更改时重新呈现

  27. 27

    状态更改时不会发生重新渲染

  28. 28

    反应不会在状态更改时重新呈现

  29. 29

    组件不会在状态更改时重新呈现

热门标签

归档