<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[csdn_smartyang的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/csdn_smartyang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; csdn_smartyang]]></copyright><item><title><![CDATA[关于react里的 img导入svg图片在线上不能正常显示的问题]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/113525253</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/113525253</guid><author>csdn_smartyang</author><pubDate>Mon, 01 Feb 2021 17:36:54 +0800</pubDate><description><![CDATA[一般我们会在webpack里配置
但是我遇到配置完也不能在线上正常显示，这里已经找不出其他原因，但是png能够显示，所以我考虑到换成png，但是放大会模糊，这也是这个的缺点，于是我只好转成base64去显示
可以在线上手动转换后引入
https://base64.guru/converter/encode/image/svg
&lt;img  src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4K]]></description><category></category></item><item><title><![CDATA[谷歌浏览器的自动填充被设计师怼太难看，怎么去掉呢？]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/113524700</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/113524700</guid><author>csdn_smartyang</author><pubDate>Mon, 01 Feb 2021 17:11:24 +0800</pubDate><description><![CDATA[这里人家写的很详细了，没必要copy保存一下啊

]]></description><category></category></item><item><title><![CDATA[react实现一个表格内容添加到文本的编辑器]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/112176534</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/112176534</guid><author>csdn_smartyang</author><pubDate>Mon, 04 Jan 2021 14:43:16 +0800</pubDate><description><![CDATA[react实现一个表格内容添加到文本的编辑器
技术攻克难点
一.输入框的值修改（onChange）
二.dangerouslySetInnerHTML的使用
1.dangerouslySetInnerHTMl 是React标签的一个属性，类似于angular的ng-bind；
2.有2个{{}}，第一{}代表jsx语法开始，第二个是代表dangerouslySetInnerHTML接收的是一个对象键值对;
3.既可以插入DOM，又可以插入字符串；
4.不合时宜的使用 innerHTML 可能会导致 cros]]></description><category></category></item><item><title><![CDATA[js 前端算法------大厂面试笔试题(二叉树的深度优先遍历)]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/111928707</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/111928707</guid><author>csdn_smartyang</author><pubDate>Tue, 29 Dec 2020 16:34:50 +0800</pubDate><description><![CDATA[今日分享的是二叉树的深度优先遍历

1.二叉树深度遍历通俗易懂的来讲就是优先往深处走，就是看有没子节点，从左到右比如从1 开始遍历，从左往右走，有没有子节点，有是2，就再看2遍历完了再看5以此类推
2.那么二叉树和栈的结合就是利用栈的后进先出的特点，从右往左把子节点放在栈中依次取出遍历
3.用js实现
//模拟一个二叉树
let tree={
    value:1,
    childleft:{
        value:2,
        childleft:{
            value]]></description><category></category></item><item><title><![CDATA[react判断点击位置是否为组件内,实现点击外部触发组件内事件(点击元素外隐藏元素)]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/109391742</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/109391742</guid><author>csdn_smartyang</author><pubDate>Mon, 28 Dec 2020 15:36:27 +0800</pubDate><description><![CDATA[我们拿到这样一个没做过的肯定是先一手百度
https://www.cnblogs.com/ives/p/11291769.html
结合所有的我发现这种

]]></description><category></category></item><item><title><![CDATA[实现sum()求sum(1)(4)(6)(),sum(1,2,3)(12)(1,2,3)()]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/111681295</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/111681295</guid><author>csdn_smartyang</author><pubDate>Fri, 25 Dec 2020 14:56:11 +0800</pubDate><description><![CDATA[就是闭包和回调函数结合一下就OK
f(1)() // 1
f(1)(2)(3)() // 6
f(1)(2)(3)(4)() // 10
function sum(){
    var num=0;
    Object.values(arguments).map(i=&gt;{return num+=i})
    return function su(){
        if(arguments[0]){
            Object.values(arguments).map(i=&gt;{]]></description><category></category></item><item><title><![CDATA[某跳动面试凉经]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/110492235</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/110492235</guid><author>csdn_smartyang</author><pubDate>Wed, 02 Dec 2020 19:42:06 +0800</pubDate><description><![CDATA[面试题1.自我介绍完，聊一下做过的项目，(我这里说了我在某讯开发部署的经验，所以这里聊了下)2.简单的出个题，用两个栈Stack实现一个队列Queue，栈用数组模拟(手写代码而且是，你写一行面试官就能看见一行的那种)3.那我们换一个，斐波那契数列计算出fn(100)吧4.三次握手，四次挥手分别是什么5.那做个this的指向题吧
以前也只是听说大厂面试要手撕代码，今天确实亲身体会了，接下来就奉献出机会不多的经验
1.自我介绍完，聊一下做过的项目，(我这里说了我在某讯开发部署的经验，所以这里聊了下)
2.简单的]]></description><category></category></item><item><title><![CDATA[react滚动条下拉加载更多]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/109725640</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/109725640</guid><author>csdn_smartyang</author><pubDate>Mon, 16 Nov 2020 17:29:28 +0800</pubDate><description><![CDATA[export default class Home extends Component {
    constructor(props) {
        super(props);
        this.wrapper = React.createRef();
        }
async getOldMore(){
	/*放你的请求地址*/
}
componentDidMount() {
        let timeCount;
        const that=this;

     ]]></description><category></category></item><item><title><![CDATA[常用一些函数(时间戳,点赞数)]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/109678655</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/109678655</guid><author>csdn_smartyang</author><pubDate>Fri, 13 Nov 2020 17:10:03 +0800</pubDate><description><![CDATA[时间戳
timeTamp(time){
        let date=new Date();
        date.setTime(parseInt(time)*1000)
        let year=date.getFullYear()
        let month=date.getMonth()
        let day=date.getDate()
        let hour=date.getHours()
        if(hour&lt;10){
       ]]></description><category></category></item><item><title><![CDATA[vue3.0学习第三天]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/109485958</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/109485958</guid><author>csdn_smartyang</author><pubDate>Wed, 04 Nov 2020 15:17:02 +0800</pubDate><description><![CDATA[1.composition API 和Option API可以混合使用
composition API本质(组合API/注入API)
2.setup执行时机
beforeCreate:表示组件刚刚被创建出来，组件的data和 methods还没有被初始化好
setup
Created:表示组件刚刚被创建出来，并且组件的data和methods已经初始化好set
注意点:
1)由于在执行setup函数的时候,还没有执行created生命周期的方法，
所以在setup中还不能使用data和methods
2)由]]></description><category></category></item><item><title><![CDATA[vue3.0学习第二天（组合API）]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/109472133</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/109472133</guid><author>csdn_smartyang</author><pubDate>Tue, 03 Nov 2020 17:16:35 +0800</pubDate><description><![CDATA[组合API
取消了data,methond,把他们都放在了setup()里面
1.对简单类型的变量处理
import {ref} from 'vue'

例子如下
&lt;template&gt;
 &lt;div&gt;
   &lt;p&gt;{{count}}&lt;/p&gt;
   &lt;button @click="myFn()"&gt;按钮&lt;/button&gt;
 &lt;/div&gt;
&lt;/template&gt;

&lt;script&gt;
import {ref} ]]></description><category></category></item><item><title><![CDATA[react 实现点击元素外隐藏元素的功能（react判断点击位置是否为组件内,实现点击外部触发组件内事件）]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/109446054</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/109446054</guid><author>csdn_smartyang</author><pubDate>Mon, 02 Nov 2020 12:12:38 +0800</pubDate><description><![CDATA[遇到问题先百度，但是最近发现百度的内容好多都老旧了，跟不上时代，本文基于https://www.cnblogs.com/ives/p/11291769.html的内容上进行完善和补充
为什么说它旧了呢，因为在新版的react中这个已经   ref="refTest"已经废弃可以参考之前的这篇文章
react 中如何清空input的值
import React, {Component} from 'react';
import {findDOMNode} from 'react-dom'

export de]]></description><category></category></item><item><title><![CDATA[react 配置路由]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/109067755</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/109067755</guid><author>csdn_smartyang</author><pubDate>Wed, 14 Oct 2020 10:45:29 +0800</pubDate><description><![CDATA[react4.0以后的路由配置和之前的配置还是有很大区别的。

npm i 不指定版本去下载一般都是最新的，

在App.jsx直接引入配置就行
import React, { Component } from 'react'
import relationChart from './components/RelationChart';
import relationChart1 from './components/RelationChart1';
import './App.less'
import ']]></description><category></category></item><item><title><![CDATA[vue3.0学习第一天(vue3.0的亮点)]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/108939507</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/108939507</guid><author>csdn_smartyang</author><pubDate>Tue, 06 Oct 2020 16:27:50 +0800</pubDate><description><![CDATA[1.vue3.0六大亮点
-Performance:性能比vue2.x快1.2~2倍
-Tree shaking support:按需编译，体积比vue20x更小
-compostion API:组合API
-Better TypeScript support:更好的Ts支持
-Custom Renderer API:暴露了自定义渲染的API
-Fragment,Teleport,Suspense:更先进的组件
2.vue3.0是如何变快的？
(1)diff方法优化:
+vue2.0中的虚拟dom是进行全量]]></description><category></category></item><item><title><![CDATA[把后端返回的json数据格式化显示在页面上，类似json.cn]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/108887742</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/108887742</guid><author>csdn_smartyang</author><pubDate>Wed, 30 Sep 2020 17:20:45 +0800</pubDate><description><![CDATA[今天老大提了一个需求，想要做一个按钮点击后出现一个类似于json.cn代码格式化,把后端返回给你的一个json数据格式化以后显示在页面上，经高人指点知道了这样一个jsoneditor模块
一.介绍
JSON编辑器是基于Web的工具，用于查看，编辑，格式化和验证JSON。 它具有多种模式，例如树编辑器，代码编辑器和纯文本编辑器。
该编辑器可以用作您自己的Web应用程序中的组件。 该库可以作为CommonJS模块，AMD模块或常规javascript文件加载。
支持的浏览器：Chrome，Firefox，Saf]]></description><category></category></item><item><title><![CDATA[vscode的 Eslint代码自动格式化]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/108881263</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/108881263</guid><author>csdn_smartyang</author><pubDate>Wed, 30 Sep 2020 10:40:51 +0800</pubDate><description><![CDATA[在生产开发过程中企业一般要求我们开Eslint，目的是为了提高代码的可读性和规范性便于在你离职后代码能让别人接手，
第一步

第二步
preferences找到Setting文件夹

第三步插入以下代码并阅读一下即可
{
    // #值设置为true时，每次保存的时候自动格式化；值设置为false时，代码格式化请按shift+alt+F
    "editor.formatOnSave": true,
    //设置tab的缩进为2
    "editor.tabSize": 2,
    // #每]]></description><category></category></item><item><title><![CDATA[react+antd输入框值想在点击清空按钮的时候清空怎么办()]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/108870614</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/108870614</guid><author>csdn_smartyang</author><pubDate>Tue, 29 Sep 2020 16:37:00 +0800</pubDate><description><![CDATA[废话不多说先上一版解决办法
clear(){
	this.refs.myInput.state.value = '';
}
&lt;Search size="large" defaultValue="" style={{ width: 400 }} ref={this.textInput} /&gt;
&lt;Button onClick={() =&gt; {this.clear()}}&gt;清空&lt;Button&gt;                                

这个虽然可以]]></description><category></category></item><item><title><![CDATA[js方法去掉输入的特殊符号(包括空格)]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/108867724</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/108867724</guid><author>csdn_smartyang</author><pubDate>Tue, 29 Sep 2020 14:29:58 +0800</pubDate><description><![CDATA[js方法去掉输入的特殊符号包括空格
function b(s)
{
var pattern = new RegExp("[` ~!@#$^&amp;*()=|{}':;',\\[\\].&lt;&gt;/?~！@#￥……&amp;*（）——|{}【】‘；：”“'。，、？]")
var rs = "";
for (var i = 0; i &lt; s.length; i++) {
rs = rs+s.substr(i, 1).replace(pattern, '');
}
return rs;
} 


.]]></description><category></category></item><item><title><![CDATA[var let const(经典面试篇)]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/108454856</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/108454856</guid><author>csdn_smartyang</author><pubDate>Mon, 07 Sep 2020 20:39:03 +0800</pubDate><description><![CDATA[var let const的区别
一）var声明变量存在变量提升，let和const不存在变量提升
二）let、const都是块级局部变量
三）同一作用域下let和const不能声明同名变量，而var可以
那么笔试题
for(let i=0;i&lt;5;i++){
      setTimeout(function(){
        console.log(i);
      },0)
    }
    console.log(i);

输出:5 0 1 2 3 4
	for(var i=0;i&l]]></description><category></category></item><item><title><![CDATA[Proxy]]></title><link>https://blog.youkuaiyun.com/csdn_smartyang/article/details/108291901</link><guid>https://blog.youkuaiyun.com/csdn_smartyang/article/details/108291901</guid><author>csdn_smartyang</author><pubDate>Sat, 29 Aug 2020 11:06:10 +0800</pubDate><description><![CDATA[Proxy从ES6到VUE3.0
ES6-Proxy代理 
Vue3.0-Proxy
感兴趣的可以去看一下，我这里只记录一下我面试遇到的
vue双向绑定的原理 v-module
vue数据双向绑定通过‘数据劫持’:指的是在访问或者修改对象的某个  属性时，通过一段代码拦截这个行为，进行额外的操作或者修改返回结    果 。 vue2.0用 Object.defineProperty() 这个方法重新定义了对象  获取属性值(get)和设置属性值(set)的操作来实现的
vue3.0用Proxy

订阅发布模]]></description><category></category></item></channel></rss>