Javascript 在React中删除项时解决空值问题
当我删除react组件中的一项时,另一个组件中的一些代码将变为null,react应用程序将崩溃。有没有解决方法,或者我可以用这种方法来实现,而不是得到一个错误?请参阅下面的代码 当我删除组件中的某个项时,我想某些外部代码会呈现为null,因为我得到了错误: TypeError:无法读取未定义的属性“type”Javascript 在React中删除项时解决空值问题,javascript,reactjs,react-native,null,conditional-rendering,Javascript,Reactjs,React Native,Null,Conditional Rendering,当我删除react组件中的一项时,另一个组件中的一些代码将变为null,react应用程序将崩溃。有没有解决方法,或者我可以用这种方法来实现,而不是得到一个错误?请参阅下面的代码 当我删除组件中的某个项时,我想某些外部代码会呈现为null,因为我得到了错误: TypeError:无法读取未定义的属性“type” 114 | class AccountActivity extends Component { 115 | static getDerivedStateFromProps(p
114 | class AccountActivity extends Component {
115 | static getDerivedStateFromProps(props, state) {
116 | const { currentAccountId, accounts } = props;
> 117 | const currentAccountType = currentAccountId ? accounts.filter(acc => acc.id === currentAccountId)[0].type : null;
118 |
119 | const { currentTab } = state;
120 | if (currentAccountType === ACCOUNT_TYPES.MANUAL && (currentTab === ACTIVITY_TABS.OPEN_ORDERS || currentTab === ACTIVITY_TABS.ORDER_HISTORY)) {
最好的解决方案是从
帐户
列表中删除该项目,而不是将其设置为null。该错误意味着帐户中没有值。筛选器(…)[0]
。请尝试accounts.filter(…)[0]?。键入。问号向javascript指示前面的值可能为null或未定义,如果为null或未定义,则停止执行该语句。@CharlesBamford感谢您的输入,但是我尝试了这一点,并在执行时遇到意外的令牌错误好的,我不知道您正在运行的js版本。您可以使用以下命令模拟该行为:let currentAccountType=null;如果(currentAccountId){const filtered=accounts.filter(acc=>acc.id==currentAccountId);currentAccountType=filtered.length&&filtered[0].type;}
@CharlesBamford谢谢Charles,这似乎成功了。然而,还有一个地方我得到空值,并尝试使用相同的方法。但是在这里返回一些错误:const accountType=filteraccounted?accounts.find(acc=>acc.id==filterAccountId)。类型:null;