【问题标题】:Trying to make a sub page (channel) in reactjs试图在reactjs中创建一个子页面(频道)
【发布时间】:2018-05-19 19:39:03
【问题描述】:

我正在努力让用户能够在我的网络应用中创建频道。

如果你看到下面的图片,有一个模式可以接受输入并使用

作为新创建的页面的 id。

我的路线指定为:

require('./styles/main.scss');

render(

    <Router> 
        <div>
            <Route exact path="/" component={Home}/>
            <Route exact path="/RecTest" component={RecTest}/>
            <Route exact path="/Example" component={Example}/>
            <Route path="/channels/:id" component={ (props) => (<Channel {...props}/>)} />
        </div>
    </Router>,

    // Define your router and replace <Home /> with it!
    document.getElementById('app')
);

模态代码为:

class MakeChannelModal extends Component {

    constructor(props){
        super(props);
        console.log("constructor");
        this.state={
            channelName: ''
        }

        this.clickHandler = this.clickHandler.bind(this);
        this.inputChangeHandler = this.inputChangeHandler.bind(this);
    }

    inputChangeHandler(event) {

        this.setState({
            channelName: event.target.value
        })
    }

    clickHandler() {
        <Link to={{ pathname: '/channels/' + this.state.channelName }}></Link> 
    }


    render(){
        return(

            <div className="ui active modal">
                <div className="header">Create a New Channel</div>
                <div className="loginbody">
                    <div className="fillout">
                        <div className="channelName">
                            <span>Channel Name: </span>                            
                            <Input
                                onChange = { this.inputChangeHandler }
                                placeholder="Channel Name"
                                label = "Channel Name"
                                value = { this.state.channelName } />
                        </div>
                    </div>
                    <Button onClick = { this.clickHandler }>
                        SUBMIT
                    </Button>
                </div>
            </div>
     )
    }
}

export default MakeChannelModal

我假设这是为了获取频道名称输入并将页面定向到 ID 为 dfChannel 组件。

我的频道组件现在只是空白。

问题是,如果我在模态中单击提交,它不会做任何事情。

甚至不显示错误。

我做错了什么?

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    clickHandler() 应该是一个改变路径名的函数,使Router 绘制另一个组件,但它尝试自己绘制 React 组件(虽然不太成功,因为这个函数实际上并没有返回任何东西)。

    我认为您应该在onClick() 中使用props.history.push(),或者将&lt;Button /&gt; 设为&lt;Link /&gt;

    解决方案 1:(如果您想要 &lt;Button&gt;,最好使用)

    用这个替换你的clickHandler()

    clickHandler() {
      this.props.history.push('/channels/' + this.state.channelName);
    }
    

    解决方案 2:(仍然有效)

    用这个替换你的&lt;Button ... /&gt; 组件:

    <Link to={{ pathname: '/channels/' + this.state.channelName }}>
      SUBMIT
    </Link>
    

    所以回答history.push()https://stackoverflow.com/a/43298961/6376451

    【讨论】:

    • 感谢您的回答。它确实将我带到 /channels/id 链接,但即使我在 Channel 组件中添加了东西,我的新页面中也没有出现任何内容。
    • 调试可能需要更多代码,特别是 Channel 组件。在测试时,我只是做了一个假人,它奏效了。
    猜你喜欢
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 2015-09-21
    • 2018-12-22
    • 1970-01-01
    • 2013-11-02
    • 1970-01-01
    • 2017-08-30
    相关资源
    最近更新 更多