Я работаю Alex Bank's "Building a Polling App with Socket IO and React.js" (Lynda.com), но я пытаюсь обновить его до взаимодействия с маршрутизатором 1.0.0-RC1.React-Router 1.0.0RC1 - Передача состояния как дочерних маршрутов
Solution below, just skip all this
Пожалуйста, не присылайте мне в документации, она не работает для меня, я предполагаю, что я должен быть слишком толстым, чтобы понять в документации по по «содержательность».
У меня есть основной APP с тремя дочерними маршрутами, (Аудитория, Спикер & Board).
Мой код до сих пор:
APP.js
import React, { Component } from 'react';
import io from 'socket.io-client';
import Header from './parts/Header';
import Routes from '../router/routes';
import { createHistory, useBasename } from 'history';
const history = useBasename(createHistory)({
basename: '/'
});
export default class APP extends Component {
constructor() {
super();
this.state = ({
status: 'disconnected',
title: ''
});
}
componentWillMount() {
this.socket = io('http://localhost:3000');
this.socket.on('connect', this.connect.bind(this));
this.socket.on('disconnect', this.disconnect.bind(this));
this.socket.on('welcome', this.welcome.bind(this));
}
connect() {
this.setState({status: 'connected'});
}
disconnect() {
this.setState({status: 'disconnected'});
}
welcome(serverState) {
this.setState({title: serverState.title});
}
render() {
return (
<div>
<Header title={ this.state.title } status={ this.state.status }/>
{ /* I WANT TO PASS THIS.STATE.STATUS TO CHILD ROUTES */}
<Routes history={ history } />
</div>
);
}
}
Routes.js
import React, { Component } from 'react';
import Route from 'react-router';
import APP from '../components/APP';
import Audience from '../components/Audience';
import Board from '../components/Board';
import Speaker from '../components/Speaker';
import NotFound from '../components/NotFound';
export default class Routes extends Component {
constructor() {
super();
}
render() {
return (
<Route history={ this.props.history } component={ APP }>
<Route path="/" component={ Audience } />
<Route path="audience" component={ Audience } />
<Route path="board" component={ Board } />
<Route path="speaker" component={ Speaker } />
<Route path="*" component={ NotFound } />
</Route>
);
}
}
Audience.js
import React, { Component } from 'react';
export default class Audience extends Component {
constructor() {
super();
}
render() {
return (
<div>
Audience - STUCK HERE!! - How to pass APP's this.state.status as a prop????
</div>
);
}
}
Хотя прогонов приложения, и я прочитал документацию, я до сих пор не в состоянии передать this.state.status приложения как свойство к аудитории приложение.
Я был на этом в течение 2 дней безрезультатно, и это расстраивает. TGIF.
Desired Result:
When a browser is opened to localhost:3000, the default page (Audience.js), should read as:
Untitled Presentation - connected Audience - connected
I cannot get the status of connected passed to the Audience component so the word 'connected' is not showing up next to Audience. I am connected as evidenced by Header's "Untitled Presentation - connected"
Может кто-нибудь помочь мне здесь.
Большое спасибо!
Пробовал ли вы спрашивать на странице github с реактивным маршрутизатором с вашей проблемой? Сопровождающий очень хорош, и он ответил в течение получаса, когда у меня возникла проблема. –
Да, их ответ был кратким и неоднозначным, как будто я живу весь день и ночь, думая о реакции-маршрутизаторе. Не очень доволен своей «поддержкой». –
Если вы что-то не понимаете, не нужно много просить их разъяснять. У меня не было ничего, кроме хорошего опыта работы с маршрутизатором. Вы также должны помнить, что владелец реактивного маршрутизатора поддерживает это, так как, ну, свободно и владеет репо, поэтому он собирается говорить, как будто вы знакомы с ним. –