React bootstrap 响应式设计无法与 react hooks 和 alan AI 一起使用

Posted

技术标签:

【中文标题】React bootstrap 响应式设计无法与 react hooks 和 alan AI 一起使用【英文标题】:React bootstrap responsive design not work as intended with react hooks and alan AI 【发布时间】:2021-08-03 23:42:36 【问题描述】:

我是一个完整的 react hooks 初学者,就像几周前一样。 所以我在我的反应卡组件中使用反应钩子。 基本上卡片组件必须在一行中分成 3 列。 但有垂直堆叠在一起。也许我的反应应用程序只占用了浏览器窗口的一半。 我不知道为什么会这样。 我还在用alan AI按钮做一些其他的东西,看起来我的卡片组件和按钮重叠了。

我的 index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import './App.css';

import 'bootstrap/dist/css/bootstrap.min.css';
import 'font-awesome/css/font-awesome.min.css';
import 'bootstrap-social/bootstrap-social.css';
ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById('root')
);


我的 App.js

import  Card ,Alert,CardImg , CardText,CardTitle,BreadcrumbItem,Breadcrumb, Row, Col,CardDeck,Jumbotron,Container from 'reactstrap';

import  useState, useEffect from "react";
import alanBtn from '@alan-ai/alan-sdk-web'
import  Grid  from '@material-ui/core';
import  menuItems  from './shared/Myitems.js';
import CardJS from './CardJS.js'


function RenderMenuItem(product)

return (
  <Container>
    
    <Row xs="2">

    <Col>
      <CardDeck style=display: 'flex', flexDirection: 'col' >
 
          <CardJS product=product/>
       
     
      
 
     </CardDeck>
  </Col>
  </Row>
  </Container>
 
 
);





function App() 
  const [products, setProducts] = useState([])
  const [cart, setCart] = useState([])
  
 
  

  useEffect(() => 
    alanBtn(
      top:"15px",
      left:"15px",
      key:
        "cae166fc0c628179186385ada308798d2e956eca572e1d8b807a3e2338fdd0dc/stage",
      onCommand: (commandData) => 
        if (commandData.command === "getMenu") 
          setProducts(commandData.data)
          console.log(commandData)
         
         else if (commandData.command === "addToCart") 
          setCart((currentCart) => [...currentCart, commandData.data])
         
      ,
    )
, [])

return (


 
  <div className="App ">

   
    products.map((product) => (
      
              <div  key=product.name  >
    
                   <RenderMenuItem  product=product />
                    
                </div>
       
    

    ))
    Cart:
    cart.map((cartItem) => (
      <div key=cartItem.name>
        cartItem.name - cartItem.price - cartItem.category
      </div>
    ))
  </div>
)



  


export default App;

我的 CardJS.js

import  Card ,Alert,CardImg , CardText,CardTitle,BreadcrumbItem,Breadcrumb, Row, Col,CardDeck,Jumbotron,Container from 'reactstrap';

import  useState, useEffect from "react";
import alanBtn from '@alan-ai/alan-sdk-web'
import  Grid  from '@material-ui/core';
import  menuItems  from './shared/Myitems.js';

export default function  CardJS(product)

    return (
<>


        <Card className="col-12 col-md-4">
        <CardImg   src=product.src alt=product.name className="img-thumbnail" />
        <br />
       <CardTitle><p className="center">product.price</p></CardTitle>
       <CardText>  product.name</CardText>
       <CardText> product.category</CardText>
   
      </Card> 

</>

    );

并且我已经安装了所有必要的依赖项。

yarn add bootstrap
yarn add reactstrap

添加了 Bootstrap 依赖并显示在代码中 如果有什么问题请告诉我..!!! 任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

map() 函数中有太多容器... 而是将行放在列表之外,并将 col 包装在顶层:

div className="App ">
<Container>
<Row xs="2" >
   
    products.map((product) => (
      
              <Col  key=product.name  >
    
                   <RenderMenuItem  product=product />
                    
                </Col>
    ))

</Row>

    cart.map((cartItem) => (
      <div key=cartItem.name>
        cartItem.name - cartItem.price - cartItem.category
      </div>
    ))
</Container>
  </div>

你可以去掉每个项目中的其他行、容器和列组件

【讨论】:

以上是关于React bootstrap 响应式设计无法与 react hooks 和 alan AI 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

响应式网页设计Bootstrap开发速成 从入门到精通学习总结入门教程

在 Bootstrap 3 响应式设计中居中水平列表

Redux和react-redux的学习总结

学生专用网页响应式网页设计动漫主题 bootstrap响应式设计动漫源码分享 附福利网页下载链接

响应式设计之Bootstrap浅谈

前端库Bootstrap框架:「01] 使用 Fluid 容器实现响应式设计