Xaip
@Xaip

Почему не рендерятся вложенные Route?

Есть три четыре простецких компонента
App:
.....................................
class App extends React.Component {

    componentWillMount() {
        this.props.AppActions.checkSession();
    }

    render() {
        const { user } = this.props;
        return <Router>
            <main>
                <Top/>
                <Route exact path="/" render={() => (user.is_auth ? <State/> : <Redirect to={'/login'} />)} />
                <Route path="/login" component={Authentication} />
                <Route path="/logging/:process" render={props => (user.is_auth ? <Logging {...props} key={props.location.key}/> : <Redirect to={'/login'} />)} />
                <Route path='/tasks' render={props => (user.is_auth ? <Tasks/> : <Redirect to={'/login'} />)}/>
            </main>
        </Router>
    }
}
...................................

Tasks в котором находится роут на компонент Detail, который не рендерится:
class Tasks extends React.Component {
    constructor(props) {
        super(props);
        this.state = {};
    }

    componentWillMount() {
        this.props.TasksActions.getTasks();
    }


    render() {
        const {tasks} = this.props;
        return <div className="content">
            <div className="tasks">
                {
                    tasks.tasks.map((t, index) => (
                        <Task key={index} t={t}/>
                    ))
                }
                <Route path={'tasks/:taskId'} component={Detail} />
            </div>
        </div>
    }
}

function mapStateToProps(state) {
    return {
        tasks: state.tasks,
    }
}

function mapDispatchToProps(dispatch) {
    return {
        TasksActions: bindActionCreators(TasksActions, dispatch)
    }
}


export default connect(mapStateToProps, mapDispatchToProps)(Tasks)

Task(в котором находится Линк на компонент Detail):
export default function Task({t}) {
    if (t) {
        return (
            <div className="task">
                <Link to={'/tasks/'+t.id}>
                <div className="task_info task_date_created">{t.date_created}</div>
                    </Link>
                <div className="task_up">
                    <div className="task_info task_city_name">{t.city_name}</div>
                </div>
                <div className="task_down">
                    <div className="task_info task_path">{t.path}</div>
                </div>
            </div>
        )
    } else {
        return <div></div>
    }
}

И сам Detail который не рендерится:
export default function Detail({task}) {
    return <div>1</div>
}

А если обновить страницу по роуту /tasks/6 то компонент рендерится но только один раз, потом по линкам он не переключается
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы