2017-08-31 68 views
0

我取经由Axios-数据>减速然后用阵营-终极版(@connect)把它包装和分派成道具:空,将其通过RactJS/Axios公司填充的表(this.props)

this.props.dispatch(fetchContacts(this.state.searchParam)); 

然后让ReactJS渲染表格。

我想要重置所有过滤器并清空表格,如果用户按ESC。 我是ReactJS的新手,所以我不知道所有的规则,但似乎你不应该自己触摸DOM来避免问题。

我的尝试是这样的:

let tbody = document.getElementById('contactList').getElementsByTagName('tbody')[0]; 
//Empty table 
while (tbody.firstChild) { 
    tbody.removeChild(tbody.firstChild); 
} 

但是,如果我不喜欢它,当我尝试加载一个新的数据集,我会收到以下错误:

test.js:6210 Uncaught (in promise) TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'. at removeChild

我怎么能告诉reactJS清空桌子或者至少告诉它已经空了?

或者我认为我必须做的,重置道具? 改变反应中的道具似乎并不那么直接。

+1

当用户按Esc键时,调用另一个方法removeContacts。将某些动作类型“REMOVE_CONTACTS”返回给reducer,并在reducer中仅清空state属性。这会将空对象返回到您调用mapStateToProps的容器。这将重新渲染没有数据的表格。 – Trinu

+0

是的工作,可以想到这个...谢谢 – Tiega

+0

不客气 – Trinu

回答

1

所有其他方法removeContacts当用户按Esc键时的动作。将某些动作类型“REMOVE_CONTACTS”返回给reducer,并在reducer中仅清空state属性。这会将空对象返回到您调用mapStateToProps的容器。这将重新渲染没有数据的表格。