【发布时间】:2019-05-20 01:24:38
【问题描述】:
if条件先运行失败。
因此,一旦加载了组件,它就会显示“与学生进度相关的统计信息”,并且一旦设置了主题链接(在其他一些组件中删除得过于正确),它就会显示第二个显示。 到目前为止一切正常,但是当主题链接被删除时,如果条件无法首先运行并且仍然显示第二个显示。基本上我想根据是否存在主题链接来更改我的组件视图。
import React, { Component } from "react";
import {connect} from 'react-redux';
import {getQuestionsList} from '../../store/actions/questionActions';
class Test extends Component {
render(){
let display;
let topicLink = localStorage.getItem('topic-link');
if(!topicLink){
display =
<div style={{textAlign:'center',
fontSize:'22px'}}>
<p>Student Progress related Stats</p>
</div>
}
else if(topicLink){
display =
this.props.questions.map(question => (
<div key={question.id} style={{border:'1px solid #000',marginBottom:'15px'}}>
<div dangerouslySetInnerHTML={{__html: question.direction}} />
<div dangerouslySetInnerHTML={{__html: question.question}} />
<div>
<form>
<input type="radio" name="option" value="(A)"/>{question.option_a}<br/>
<input type="radio" name="option" value="(B)"/>{question.option_b}<br/>
<input type="radio" name="option" value="(C)"/>{question.option_c}<br/>
<input type="radio" name="option" value="(D)"/>{question.option_d}
</form>
</div>
</div>
))
}
return (
<div>
{display}
</div>
);
}
};
const mapStateToProps = state => {
return {
questions: state.questions.items,
}
}
export default connect(mapStateToProps, {getQuestionsList})(Test);
【问题讨论】:
-
更新本地存储不会触发 React 渲染。
-
但是当主题链接发生变化时,组件也会相应地更新
-
您期望发生的 localStorage 更改是否来自同一个选项卡?
-
@ChandranshuKumar 您没有显示该代码,但在这种情况下,某些 else (
setState或forceUpdate)会导致重新渲染。设置localStorage本身不会导致重新渲染。下次渲染时,它将从localStorage获得正确的值。但是,您清除的值也可能不正确。显示其他代码,我可能会回答。
标签: javascript reactjs redux local-storage