当前位置: 首页 > 面试题库 >

如何从Reactjs组件的状态对象中删除属性

苗森
2023-03-14
问题内容

如果我有一个在其状态上设置了属性的react组件

onClick() {
    this.setState({ foo: 'bar' });
}

是否可以从"foo"此处删除Object.keys(this.state)

该replaceState方法看起来像明显的方法来尝试,但它至今已贬值。


问题答案:

您可以设置fooundefined,像这样

var Hello = React.createClass({
    getInitialState: function () {
        return {
            foo: 10,
            bar: 10
        }
    },

    handleClick: function () {
        this.setState({ foo: undefined });
    },

    render: function() {
        return (
            <div>
                <div onClick={ this.handleClick.bind(this) }>Remove foo</div>
                <div>Foo { this.state.foo }</div>
                <div>Bar { this.state.bar }</div>
            </div>
        );
    }
});

Example

更新资料

先前的解决方案只是从中删除价值fookey
存在的技能state,如果您需要从中完全删除密钥state,则可能的解决方案之一可以是setState与一位父母同住 key ,就像这样

var Hello = React.createClass({

  getInitialState: function () {

    return {

      data: {

        foo: 10,

        bar: 10

      }

    }

  },



  handleClick: function () {

    const state = {

      data: _.omit(this.state.data, 'foo')

    };



    this.setState(state, () => {

      console.log(this.state);

    });

  },



  render: function() {

    return (

      <div>

        <div onClick={ this.handleClick }>Remove foo</div>

        <div>Foo { this.state.data.foo }</div>

        <div>Bar { this.state.data.bar }</div>

      </div>

    );

  }

});



ReactDOM.render(<Hello />, document.getElementById('container'))


<script src="https://cdn.jsdelivr.net/lodash/4.17.4/lodash.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id="container"></div>


 类似资料:
  • 我有一个具有和属性的对象数组: 我想从所有对象中删除属性,并在控制台中打印,如

  • 我正在尝试从对象数组中删除属性。 我希望var2包含这样的内容。 是否有方法将/cast转换为上述内容?换句话说,我想从对象数组中删除,并将其分配给。我该怎么做?

  • 问题内容: 说我创建一个对象,如下所示: 删除该属性以使其最终成为new 的最佳方法是什么? 问题答案: 像这样: 演示版

  • 我正在将父组件的状态从父组件传递到子组件。在子组件中,我有一个不同的状态。我正在对子组件的状态执行一些操作,并且结果必须添加到父组件的状态。因此,在我的父组件中,我编写了一个回调函数,该函数将更新父组件的状态。代码为: 因此,这个函数随后作为道具传递给子组件: 然后在我的子组件中,我试图实现回调函数为: 但这并没有达到预期效果。这是正确的方法吗?有人能帮我吗? 我试图通过实现这里提供的解决方案来解

  • 问题内容: 如何通过匹配对象属性从数组中删除对象? 请只使用本机JavaScript。 我在使用接头时遇到麻烦,因为每次删除的长度都会减少。使用克隆并在原始索引上进行拼接仍然会给您带来长度减少的问题。 问题答案: 我以为你用过这样的东西? 修复bug所需要做的就是在下一次减少,然后(也可以选择向后循环): 为了避免线性时间删除,可以编写要 保留 在数组上的数组元素: 为了避免在现代运行时中进行线性

  • } 现在,我的要求是当我单击“删除列”时,它会进入此方法,并且我想删除与之关联的特定列和行。 提前谢谢你的帮助。