javascript - (react) 动态 URL,无法呈现我想要的数据

标签 javascript node.js reactjs frontend

我已经快到了,但仍然无法向我发送数据。

我的数据组件可以呈现博客文章列表,而我的路由器则针对索引和标题

//Blockblock.js
const blogData = this.state.blogData.map((value) =>
            value.map((val, idx) =>                                                       
                <BlogBlock 
                    link={val.title.toString().toLowerCase().split(" ").join("-")} 
                    title={val.title}
                    subtitle={val.subtitle}
                    thumb={val.thumb}
                    idx={idx}
                />            
            )
        )  

//Blockblock.js
const BlogBlock = (props) => {                
    return (
        <div className={`blog-post post-${props.idx}`}>            
            <Link to={`blog/${props.idx}/${props.link}`}>
                <Img loader={<span className="loading-img">loading....</span>} src={`http://brittdepetter.com/images/${props.thumb}`} alt={props.title} />
                <h3>{props.title}<span><br />{props.subtitle}</span></h3>
            </Link>  
        </div>                        
    )   
}
//app.js
<Route path='/blog/:blogId/:blogTitle' component={BlogPost} />    

最后我有了我的 blockpost 组件,我正在匹配 URL,但是如何传递 props 来渲染图像等数据?

BlockPost.js
const BlogPost =({match, location}) => {                   
    const { params:{ blogId, blogTitle } } = match;
    return (                          
        <div>                                        
            <h2>{ props.title }</h2> 
            <div className="textBox boxImg">
                <div className="story-img-box">
                    { props.imgsrc }
                </div>            
                <div>
                    {console.log(props)}
                    {props.body}
                </div>
            </div>
        </div>            
    )   
}
```

最佳答案

如果您尝试将其他属性从 BlogBlock 传递到 BlogPost,如果没有某种状态管理(如 Redux),这是不可能的。其中两个组件都能够使用共享状态。

我建议根据 BlogPost 组件内的 blogId 重新获取您的博客,因为您需要处理直接访问(如果用户直接导航到 /blog/:blogId/:blogTitle 通过在 url 中输入它,而不是从 BlogBlock 中输入)。另一种选择是仅在直接访问时重新获取,否则使用共享状态中的数据(基于从将存储在该状态中的 BlogBlock 中进行的选择)。

关于javascript - (react) 动态 URL,无法呈现我想要的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58031012/

相关文章:

javascript - 如何使用 jquery 将 span 输出到 li 中?

javascript - next.js 应用程序如何针对移动屏幕进行优化?

javascript - 为什么页面在javascript:window.open之后使用 “[Object]”空白?

javascript - 在浏览器中导入 RxJS 6?

javascript - 如果 sendToSocket 成功,为什么 setTimeout def.reject 代码不会运行?

node.js - 如何从 Rally API 获取相关对象

reactjs - 如何使用 Formik 应用突变?

javascript - 在 Quilljs 错误 : addRange(): The given range isn't in document 中将文本动态包装在 anchor 标记中

android - React Native - 为什么我的项目文件夹占用了这么多空间?

javascript - Fine Uploader 上传成功后重试