Javascript 我们可以从DOM中删除一个元素吗?

Javascript 我们可以从DOM中删除一个元素吗?,javascript,reactjs,Javascript,Reactjs,我在事件句柄上动态创建了很多react组件。 代码如下所示: var节点=[]//这是关于用户操作的属性更新,并且创建了一个元素 var node=Interfaces.symption.node; var components=node.map(函数(props){ 返回React.createElement('g'{ id:props.id, 关键字:props.id }, React.createElement('path',props)); }); var App=React.creat

我在事件句柄上动态创建了很多react组件。 代码如下所示:

var节点=[]//这是关于用户操作的属性更新,并且创建了一个元素
var node=Interfaces.symption.node;
var components=node.map(函数(props){
返回React.createElement('g'{
id:props.id,
关键字:props.id
},
React.createElement('path',props));
});
var App=React.createClass({
render:function(){
返回React.createElement('div',null,components);
}
});
render(React.createElement(App),document.getElementById('parentDrawingNode');
现在我想从dom中删除一个元素。i、 它将是一个用户操作组件,或者我想在某些特殊情况下删除,而其他组件保持不变


通过使用的REF,我们处理的是实际的dom,因此REF在这种情况下不适用。

由于您是使用数组
节点创建react元素,因此您可以基于它添加或删除元素的后续操作

推、切、切等

i、 e.
node.push({id:id,key:key})
添加元素


node.splice()
要删除元素

您缺少反应点。您不需要手动修改元素树。您可以声明性地将属性/状态映射到元素,并让React执行所有修改

var App = React.createClass({
  render: function() {
    // Get the node from the passed-in props
    var node = this.props.node;

    // generate the child components
    var components = node.map(function(props) {
      return React.createElement('g', {
        id: props.id,
        key: props.id
      },
      React.createElement('path', props));
    });

    // render them in a div
    return React.createElement('div', null, components);
  }
});


// first time it will create the DOM
// after that it just modifies the DOM
function renderApp(node, element) {
  ReactDOM.render(React.createElement(App, { node: node }), element);
}

// Call when you want to get rid of the App completely
// and cleanup memory without reloading the page
function destroyApp(element) {
  ReactDOM.unmountComponentAtNode(element);
}

// Initial render
var node = Interfaces.Embroidery.node;
renderApp(node, document.getElementById('parentDrawingNode'));

function updateNodeOnSomeUserActionThatHappensOutsideOfReact(...) {
  node.push(...); // or whatever modification you want

  // re-render
  renderApp(node, document.getElementById('parentDrawingNode'));
}
请在此处阅读有关此样式的更多信息:

请注意,如果“用户操作”发生在React组件之外(即应用程序中的其他位置),您会这样做。如果“用户操作”作为React组件中的事件发生,您只需调用一次
render
,而应用程序将节点保持为
state
,并只调用
this.setState({node:modifiedNodes})
更改状态,这将导致React更新您的DOM