V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  devwolf  ›  全部回复第 25 页 / 共 27 页
回复总数  531
1 ... 17  18  19  20  21  22  23  24  25  26 ... 27  
@ccraohng

那儿也就一个配置路由的操作来着
```
import React,{Component} from "react";
import {Switch,Route,Redirect,withRouter} from 'mirrorx';

import HomeContainer from "Pages/Home/HomeContainer"
import PerconContainer from "Pages/Person/personContainer"
import MainFrame from "./MainFrame"

class ChildRoute extends Component{
constructor(props){
super(props);

this.state={
pathname_list:[]
}
}
componentWillMount(){

let pathname_list = JSON.parse(sessionStorage.getItem("url_routes"));
if(pathname_list){
// console.log("有了有了")
this.setState({pathname_list})
}else{
// console.log("我没有")
}



}

render(){
const redirectUrl = JSON.parse(sessionStorage.getItem("url"));
const userInfo = sessionStorage.getItem("userInfo");
const user = sessionStorage.getItem("user");
const url = "/main/"+redirectUrl;
const {match} = this.props;
const token = sessionStorage.getItem("TOKEN");
const src = redirectUrl+"?user="+user+"&token="+token;



return(
token==null?(
<Redirect to="/login"/>
) :
(
<Switch>
<Route exact path={'/main'} component={HomeContainer} breadcrumbName="首页" />
<Route exact path={'/main/person'} component={PerconContainer} />

{this.state.pathname_list.length!==0&&this.state.pathname_list.map(item=>
<Route exact path={'/main/'+item.part} key={item.all} component={()=><MainFrame fullsrc={item.all+"?user="+user+"&token="+token}/>}/>
)}

</Switch>
)
)
}
}
export default withRouter(ChildRoute)

```
这次的尝试曾使我一度怀疑是在父组件 componentDidMount 部署浏览器窗口的尺寸的监听与更新 screenHeight 所导致的(虽然没什么道理,只是在使用了 memo+useState 后比较是否有什么不同时发现——改变浏览器窗口尺寸也会触发 iframe 中内容的刷新,但是在父子组件两处都注释了这个监听器后改变尺寸刷新依旧。this.props.children 看起来同时也规避了这处问题)
@doublelam

```
import React, {Component ,Fragment,useState} from "react";

import {Spin} from 'antd';

const MainFrame = React.memo(props => {



const [loading, updateLoading] = useState(true);
const [screenHeight, updateScreenHeight] = useState(document.documentElement.clientHeight-70-64);



//这里获取的高度为 iframe 服务
//window.addEventListener("resize",()=>{
// const screenHeight = document.documentElement.clientHeight;
// updateScreenHeight(screenHeight-70-64)
//});//获得窗口高度




const fullsrc = props.fullsrc

return (<Fragment>
<Spin tip= "加载中请稍后..." spinning={loading}>
<iframe name="mainFrame"
style={{width: '100%',
height: screenHeight,
border:'0px'}}
onLoad={()=>updateLoading(false)}
sandbox="allow-same-origin allow-scripts allow-forms allow-top-navigation
allow-modals allow-orientation-lock allow-pointer-lock allow-popups allow-popups-to-escape-sandbox
allow-presentation"
// scrolling="auto"
src ={fullsrc}></iframe>
</Spin>

</Fragment>)

});

export default MainFrame;
```
我尝试使用了 memo + useState,看起来 iframe 依旧在父组件切换身份而触发重渲染时疯狂刷新
@theprimone /捂脸 勉强算搞定了(未精确定位原因但是解决效果已经达到),不然真要 demo 了
@siyushin 感谢提醒。
种种糟糕的操作与理解导致了这个问题——包括自己对异步的错乱使用,更主要的是(个人猜测式总结):太过相信浏览器控制台的打印顺序(下图二、图三,图三能正常运行)
图一:<img src='http://i1.fuimg.com/704774/b71cd850a162e117.png'>
图二:<img src='http://i2.tiimg.com/704774/9eb2296d751f2b7b.png'>
图三:<img src='http://i2.tiimg.com/704774/e26bab2ed5690340.png'>
2020-05-26 13:40:41 +08:00
回复了 devwolf 创建的主题 JavaScript MVU(Mode-View-Update)想请教一下各位对这种模式的了解
@Mutoo 感谢(写太急了,没反应过来拼写失误)
2020-05-22 08:48:13 +08:00
回复了 u1ucky 创建的主题 职场话题 如果公司不符合个人职业规划,值得待下去吗?
。。。其实我是冲着标题“公司不符合个人职业规划”点进来的,结果是这种不相干的问题
2020-05-22 08:46:45 +08:00
回复了 u1ucky 创建的主题 职场话题 如果公司不符合个人职业规划,值得待下去吗?
[脏话] 的话,如果是熟人之间不是对于楼主朋友的,还是语气词不是形容词,那其实算俏皮话那类(具体得多脏,是卧槽、吊毛、dnmd 这种,还是更污秽的),不过这点没法子处理,要么加入 /适应,要么 出淤泥而不染 just like me(狗头)?
[咂嘴] 的话,说一下频率,要是急头上发现一个找不到 bug 的情况我也会咂嘴。
[代码随意] 得看谁写的,要是你说的是一个和楼主朋友同期的新人代码随意那也正常,或者是“个别方法”/“楼主朋友看到的那一小部分”。

既然是“第一份工作” + “主管还可以”(是不是可以到处理咂嘴问题,当然是那种每时每刻咂嘴的那种)+“疫情”,我个人不负责的建议还是苟着。

个人好奇,上面的总结是入职多久发出的,1 个月还是半年还是几周,这个我觉得比较有参考意义。
(我现在待久了,也习惯个别同事那种忽然就猛砸键盘一样的敲打声了,不是轴的问题。反正我现在笔记本键盘再用力也没多大声)
2020-05-13 08:44:15 +08:00
回复了 murmur 创建的主题 程序员 日常开吹:竹板这么一打,今天夸一夸,为什么我喜欢 Vue
正常这种话题不都应该左转"水深火热"吗
2020-05-12 16:13:19 +08:00
回复了 lihongming 创建的主题 Vue.js 写 React 的学了一下 Vue,真香
比什么,反正最后全都要学
@xingyuc 绝了,全部关闭
@Aeoluze 这个 get 了,全都加上了舒服的空格间隔
@Aynamic 这个好像确实很多人在用。。。就是很奇怪自己很少用到(这个帖子发出来的时候同事也回了一句"ctrl p 难道不是最多用的",然后笔者尬答道"听都没听过")
2020-05-06 09:17:55 +08:00
回复了 devwolf 创建的主题 React 对于 http://localhost:3000/?#!/login 中 hashbang 前面的?所引发的困惑
感谢#3 的老哥提供进一步讲解。
这类问题关键字应该是"submit 事件"了。
今天顺着 3 楼思路,又在 Form 组件的 onSubmit 的绑定方法里添上了 e.preventDefault()同样成功解决了问题。
对于阻止默认动作的位置(我怎么就没有这种好奇心),还在 https://www.cnblogs.com/frogblog/p/9172161.html
这篇博客里得到另一个尝试"如果没有阻止点击事件浏览器默认行为会紧接着触发 form 表单提交事件;
--如果阻止点击事件浏览器默认行为,不管是回车提交还是点击按钮提交都不会再触发 form 表单提交事件"
2020-05-05 15:45:30 +08:00
回复了 devwolf 创建的主题 React 对于 http://localhost:3000/?#!/login 中 hashbang 前面的?所引发的困惑
@ss098 一语中的啊,旧代码里用的是
<Form onSubmit={this.handleSubmit}></Form>
结合
<Button type="primary" htmlType="submit"
className="login-form-button">
登录
</Button>
我借着提示,替换成了 onClick 提交就没有出现这个问号了(旧代码也没用上封装给 onSubmit 的参数 e),
原来这方面出错会导致这样的问题啊,我再查查
过了一天,也确实没多少人提抽奖的事了,就后端搭档在钉钉上私聊抱怨微波炉搬到家膀子酸。

今天堂食时被不怎么有联系的经理拼桌了,交代了一下二期优化(就是给笔者主管下发找人做抽奖系统任务的那位,和经理拼桌吃饭果然还是如坐针毡。吃完后赏了张餐巾纸)

入职这儿有半年了,第一个月唯一认识的人资跳槽了(面试前的负责人),今天在第三方接口对接的群里面艾特人时才被后端搭档告知同办公室的老乡也离了,老乡之前就是负责写给笔者写相关任务的说明文档以及与第三方交涉的。平时待人满热情的,就是谁都能聊点什么的那种,可惜笔者是坑头写代码不健谈的那类,没怎么聊上。搭档也是昨天才得知了离职,老乡三月就开始骑驴找马了,今天忽然就人间蒸发了一样不见了,办公室里也没人议论,不知道是都习以为常了还是和笔者一样浑然不知。
0-0 昨天老乡还挺兴奋的和那些说页面还不错的人宣传是笔者写的,结果也啥也没中。
@gdt 一周前给的任务,还得花业余时间,说今年抽完了以后还要想用就用而且能随时优化加功能,就没问能不能用第三方的了
@jydeng 如有雷同纯属巧合(怕不是我 down 的就是大佬去年的代码 /doge )
@lithbitren
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator
摘录:
由于 || 是一个布尔逻辑运算符,左侧的操作数会被强制转换成布尔值用于求值。任何假值( 0, '',NaN,null,undefined )都不会被返回。这导致如果你使用 0,''或 NaN 作为有效值,就会出现不可预料的后果.
空值合并操作符??可以避免这种陷阱,其只在第一个操作数为 null 或 undefined 时(而不是其它假值)返回第二个操作数。

感谢#10 提供了拓展和线索
感谢楼上的各位解疑,原来是其他语言已经存在的语法,get 了
1 ... 17  18  19  20  21  22  23  24  25  26 ... 27  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   950 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 21:01 · PVG 05:01 · LAX 14:01 · JFK 17:01
Developed with CodeLauncher
♥ Do have faith in what you're doing.